rpop key 右端开始
5.扩展
仅当参数中指定的key存在时,向关联的list的头部插入value。如果不存在,将不进行插入。
lpushx
key value 从左边插入
rpushx
key value 从右边插入
在pivot元素前或者后插入value这个元素
linsert
key before|after pivot value
rpoplpush
库1 库2
将库1的最后一个元素移动到库2的头部
使用场景:
一般用于消息队列的服务,一个程序完成添加新元素的动作被称为"生产者"
一个程序完成取元素的动作被称为"消费者"如果在消费者取出元素后,程序立刻崩溃,而取出去元素又未被处理,容易导致数据丢失,所以可以使用RPOPLPUSH命令,从主消息队列中取出消息之后再将其插入到备份队列中,直到消费者程序完成正常的处理逻辑后再将该消息从备份队列中删除
4.存储set
在redis中可以将set类型看成没有排序的字符集合,set集合中不允许出现重复的元素;
常用命令:
增
sadd
key value1、value2…
查
smembers
key 获取set中所有的成员
sismember
key member 判断参数中指定的成员是否在该set中,1存在,0不存在
scard
key 获取元素个数
改:无
删
srem
key value
特性:
集合的差集运算 A-B
sdiff
key1 key2 返回属于key1不属于key2的元素。即返回差集
集合的交集运算 A ∩ B
sinter
key1 key2 key3…:返回交集。
集合的并集运算 A ∪ B
sunion
key1 key2 key3…:返回并集
扩展
srandmember
key:随机返回set中的一个成员
sdiffstore
destination key1 key2…:将key1、key2相差的成员存储在destination上
sinterstore
destination key[key…]:将返回的交集存储在destination上
sunionstore
destination key[key…]:将返回的并集存储在destination上
使用场景:
1.可以使用redis的set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一ip地址信息,我们将每次访问该博客的访问者的ip存入redis中,set数据类型会自动保证ip地址的唯一性.
2.充分利用set类型的服务端聚合操作方便,高效的特性,可以用于维护数据对象之间的关联关系.
5.存储sortedset
概述:sorted - set也是字符串的集合,不允许出现重复的元素,sorted-set较之于set的区别在于:它的每一个成员都会有一个分数与之相连.redis通过分数进行排序,但是成员唯一,分数是可以重复的.
常用命令:
增:
zadd key score member score2 member2 …元素存在会被覆盖
查:
zscore key member:返回指定成员的分数
zcard key:获取集合中的成员数量
zrange key start end [withscores]:获取区间元素及分数
zrevrange key start stop [withscores]: 降序排列
改:
zadd key newScore oldv
删:
zrem key member:移除集合中指定的成员,可以指定多个成员
zremrangebyrank key start stop: 按照排名范围删除元素
zremrangebyscore key min max:按照分数范围删除元素
扩展:
zrangebyscore key min max [withscores] [limit offset count]:返回分数在[min,max]的成员并按照分数从低到高排序
offset表明从脚标为offset的元素开始并返回count个成员
zincrby key increment member:设置指定成员的增加的分数。返回值是更改后的分数
zcount key min max:获取分数在[min,max]之间的成员
zrank key member:返回成员在集合中的排名。(从小到大)
zrevrank key member:返回成员在集合中的排名。(从大到小)
使用场景:
1.可以用于在线游戏的积分排行榜,当玩家分数改变时,可以使用zadd命令更相信分数,再通过zrange获取积分topten的用户信息,
2.用于构建索引数据