Redis的各种数据类型的应用场景与命令

Redis的常用数据类型String、List、Set、OrderSet、Hash
一、String类型
应用场景
1.web应用中保存用户的token,用于集群服务器的token校验;
2.对web应用的查询结果进行缓存;
3.保存系统中一些可以更变的key-value的数据,例如:设置系统某个定时器执行的时间;
4.incr是原子的,实现系统的计数统计,例如文档保存的编号,第一个文档为1,第二个文件时调用incr访问,将会返回2;系统访问次数统计,每访问一次调用incr一次;
5.设置暂停时间,例如设置机器休息5分钟,setex 3000 devicestop value ,系统访问时exists devicestop,如果存在,说明机器正在休息中,5分钟后,机器自动到期;
6.分布式锁,setnx的作用是“当key不存在时,设值并返回1,当key已经存在时,不设值并返回0”,判断key是否存在”和“设值”两个操作是原子性地执行的,因此可以用string类型作为分布式锁
String的Redis命令
set key value:保存一个字符串,如果该key存在就会重新覆盖;
setex key seconds value:保存一个字符串并设置过期时间(单位秒),如果key存在就会重新覆盖并重新设置过期时间;
setnx key value:保存一个字符串,如果key存在则保存失败;
strlen key:获取key长度;
setrange key offset value:从指定的offset处开始,覆盖value的长度;如果offset比当前key对应string还要长,那这个string后面就补空字符串" “以达到offset;
append key :如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾,如果不存在相当于set命令;
psetex key milliseconds value:跟setex一样,但是过期单位换为毫秒;
mset key value [key value …]:批量set;
msetnx key value [key value]:批量setnx;
get key:返回key的value;
mget key [key…]:批量返回key的value;
getset key:保存key的value,并获取之前的值;
getrange key start end: 返回key对应的字符串value的子串,这个子串是由start和end位移决定的(两者都在string内),可以用负的位移来表示从string尾部开始数的下标。所以-1就是最后一个字符,-2就是倒数第二个;
incr key:执行原子加1操作;
incrby key increment:执行原子加一个整数;
incrbyfloat key increment:执行原子加一个浮点数;
decr key:执行原子减1操作;
decrby key increment:执行原子减一个整数;
decrbyfloat key increment:执行原子减一个浮点数;
exists key :查询一个key是否存在;
del key [key…]:删除key;
expire key seconds:设置一个key的过期时间(秒);
pexpire key seconds:设置一个key的过期时间(毫秒);
expire key timestamp:设置一个key的过期时间(时间点 秒);
pexpire key timestamp:设置一个key的过期时间(时间点 毫秒);
persist key :移除key的过期时间;
ttl key :key的剩余过期时间(秒);
pttl key :key的剩余过期时间(毫秒);
random key:随机返回key;
rename key newkey:key重命名,newkey存在时指被覆盖;
renamenx key newkey:当且仅当 newkey 不存在时,将 key 改名为 newkey ;
type key :返回key所存储的value的数据结构类型,它可以返回string, list, set, zset 和 hash等不同的类型;
keys pattern :支持正则表达式,返回key值;
二、List类型
List应用场景
1.点对点消息队列,同一份解答问题任务有20个不同的问题,把20个问题加入队列中,然后由用户获取里面的问题出来解答;
2.排行榜,把每天的统计的排行榜加入队列中,通过lrange分页查看队列数据;
3.最新列表,lpush命令和lrange命令能实现最新列表的功能,ltrim控制列表大小;
List命令
lpush key value [value…]:左边入队一个或多个value;
lpushx key value:队列存在时左边入队一个或多个value;
lrange key start end:从左边获取key的元素,下表从0开始,-1表示倒数第一个,获取访问>=start,<=end,元素不删除;
lrem key count value:从左边删除key中的前count个value,-1表示倒数第一个;
lset key index value:设置 index 位置的list元素的值为 valu;
ltrim key start end:修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。start 和 end 都是由0开始计数的;
llen key:获取队列的长度;
lindex key index:通过索引获取一个元素;
linsert key before|after povot value:把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面;
lpop:从队列的左边出队一个元素,元素减少;
rpop:从队列的右边出队一个元素,元素减少;
rpush key value [value…]:右边入队一个或多个value;
rpushx key value:队列存在时右边入队一个或多个value;
rpoplpush source destination:把队列右边最后一个元素放入新的队列中,并返回;
blpop key[key…] timeout :从一个或多个队列的左边出队一个元素,元素减少(阻塞模式);
rlpop key[key…] timeout :从一个或多个队列的右边出队一个元素,元素减少(阻塞模式);
brpoplpush source destination:把队列右边最后一个元素放入新的队列中,并返回(阻塞模式);
三、Set类型
Set应用场景
1.过率存储不同的值的元素,自动去重;
2.自动随机获取不同的集合元素,扑克牌麻将出牌、随机展示;
3.根据类型不同存不同集合,求交集、并集、差集,实现如共同关注、共同喜好、二度好友等功能;
4.set集合黑名单快速查询;
Set命令
sadd key member [menber…]:添加一个或者多个元素到Set;
scard key:获取Set元素数量;
sdiff key [key1…]:返回key的差集,key-key1;
sdiffstore destination key [key1…]:返回key的差集并存在destination中;
sinter key [key…]:获得集合交集;
sinterstore destination key [key1…]:返回key的交集并存在destination中;
sismember key member:判断一个元素是否在集合中;
smembers key:获取集合里面所有元素;
smove key destination member:移动key Set中的元素到destination;
spop key [count]:获取Set中元素并删除;
srandmember key [count]:随机获取Set元素,不删除;
srem key member [member…]:从集合删除一个或多个元素;
sunion key [key…]:获取并集;
sunionstore destination key [key]:获取并集放入destination;
sscan key sursor [MATCH pattern] [];
四、SortSets类型
SortSets应用场景
以某个条件权重排序,例如用户得分排序;
根据某个权限查询,例如查询得分50-100的旅客;
查找集合最大或最小值的可以;
返回集合中元素的排名数;
sortSet命令
zadd key [nx|xx][ch][incr] score member [score member…]: 添加一个或多个分数/成员(score/member)对,如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置;其中参数XX仅仅更新存在的成员,不添加新成员,NX不更新存在的成员,CH只添加新成员修改返回值为发生变化的成员总数,原始是返回新添加成员的总数,INCR成员的操作就等同ZINCRBY命令;
zcard key:返回sortSet元素个数;
zcount key min max:返回分数范围的元素个数;
zincrby key increment member:sortSet中member的score增量increment;
zrange key start stop [withscores]:返回存储在有序集合key中的指定范围的元素,返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按字典排序;
zrangebylex key min max [limit offset count]:分数必须相同! 如果有序集合中的成员分数有不一致的,返回的结果就不准,返回指定成员区间内的成员,按成员字典正序排序, 分数必须相同,其中min、max必须以”[“开头,或者以”(“开头,可使用”-“代替;
zrangebyscore key min max [withscores] [limit offset count]:返回key的有序集合中的分数在min和max之间的所有元素,区间的取值使用闭区间,也可以通过给参数前增加”(“符号来使用可选的开区间(小于或大于);
zrank key member:返回有序集key中成员member的排名;
zlexcount zset [member1 [member5计算有序集合中指定成员之间的成员数量;
zpopmax key [count]:返回有序集合key中的最多count个具有最高得分的成员;
zpopmin key [count]:返回有序集合key中的最多count个具有最低得分的成员;
zrem key member [member …]:删除key元素;
zremrangebylex key min max: 删除名称按字典由低到高排序成员之间所有成员,分数必须相同,其中min、max必须以”[“开头,或者以”(“开头,可使用”-"代替;
zremrangebyrank key start stop:移除有序集key中,指定排名(rank)区间内的所有成员。下标参数start和stop都以0为底,0处是分数最小的那个元素-1是分数最高的元素;
zremrangebyscore key min max:移除有序集key中,所有score值介于min和max之间(包括等于min或max)的成员;
REVRANGE key start stop [WITHSCORES]:返回存储在有序集合key中的指定范围的元素,返回的元素可以认为是按得分从最高到最低排列。 如果得分相同,将按字典排序;
zrevrangebylex key max min [LIMIT offset count]:类似zrangebylex,排序顺序反过来;
zrevrangebyscore key max min [LIMIT offset count]:类似zrangebyscore,排序顺序反过来;
zrevrank key member:类似zrank,排序顺序反过来;
zscore key member:返回有序集key中,成员member的score值;
五、hash类型
应用场景
存储经常修改属性的对象;
存储用户关系,用户id, 年龄,姓名是key对应value值;
命令
Hdel key field [field…]:删除一个或多个hash的field;
Hexists key field:判断field是否存在hash中;
hget key field :获取hash中field的值;
hgetall key:从hash中读取全部的key和value;
hincreby key field increment:hash中的key增加increment;
hincrbyfloat key field increment:hash中的key增加浮点数;
hkeys key :获取hash的所有字段;
hlen key:获取hash里所有的字段的数量;
hmget key field [field…]:获取hash里指定字段的值;
hmset key field value [field value]:设置hash字段值;
hset key field value:设置hash里面一个字段的值;
hsetnx key field:设置hash的一个字段值,当key不存在时有效;
hsetlen key field:获取hash里面指定field的长度;
hvals key:获取hash的所有值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值