SortedSet 有序集合,与list不同,list是取出和插入的位置有顺序,但是对元素本身的大小不排序,SortedSet则是对元素本身进行排序

添加

ZADD key score member [[score member] [score member] …]

redis 列出 list redis sorted list_spring boot

在添加的时候需要添加score分值,来保证它的位置和顺序,如果分值一样则按字典的顺序排序
修改该元素的分值,需要重新插入该元素,保证它的分值

取出

按索引取出

ZRANGE key start stop [WITHSCORES]

按分值从小到达的顺序的排序, 加上WITHSCORES 就是把分值也取出,如果分值一样则按字典正序排

ZREVRANGE key start stop [WITHSCORES]

按分值从大到小排序, 加上WITHSCORES 就是把分值也取出,如果分值一样则按字典顺序倒序排

start: 开始索引

stop: 结束索引

redis 列出 list redis sorted list_java_02


redis 列出 list redis sorted list_java_03

按分值取出

ZRANGEBYSCORE key min max [LIMIT offset count]

按分值从小到大的顺序,取出分值介于min和max之间的元素,[LIMIT offset count] 是可选参数,和sql中的 limit offset count 一样,offset表示起始索引,count表示返回的数量。
**注意:**该命令key 后面放的是小分值

举例:

1.取出k1集合中分值>=1 &&<=3的元素;从索引为1的位置开始取,取出两个,按分值从小到大排序

redis 列出 list redis sorted list_redis 列出 list_04


2. 取出k1集合中分值>=3 &&<=1的元素;

redis 列出 list redis sorted list_java_05

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

按分值从大到小的顺序,取出分值介于max和min之间的元素,[LIMIT offset count] 是可选参数,和sql中的 limit offset count 一样,offset表示起始索引,count表示返回的数量
注意: 该命令key后面放的是大分值

举例:

  1. 取出分值小于等于1 并且大于等于3的元素, 这里1就在前面命令为:zrevrangebyscore k1 1 3

redis 列出 list redis sorted list_并集_06


2. 取出分值小于等于3 并且大于等于1的元素, 分值按大到小排序

redis 列出 list redis sorted list_spring_07

获取元素的分值

ZSCORE key member

redis 列出 list redis sorted list_并集_08

获取数量

ZCARD key

返回该集合的元素个数,key不存在时,返回0

redis 列出 list redis sorted list_spring boot_09

ZCOUNT key min max

返回分值在min和max之间的元素数量

redis 列出 list redis sorted list_spring boot_10

获取元素排名

ZRANK key member

按从小到大的顺序排名,最小的排名是0 ,一次递推

ZREVRANK key member

按从大到小的顺序排名,最大的排名是0 ,一次递推

redis 列出 list redis sorted list_并集_11

移除

Zrem key member [member …]

移除集合中一个或者多个元素

redis 列出 list redis sorted list_redis 列出 list_12

ZREMRANGEBYRANK key start stop

移除有序集 key 中,索引为 start和stop之间的元素, 包括start和stop

redis 列出 list redis sorted list_redis 列出 list_13

ZREMRANGEBYSCORE key min max

移除有序集 key 中,分值为min和max之间的元素, 包括min和max

redis 列出 list redis sorted list_redis 列出 list_14

遍历

ZSCAN key cursor [MATCH pattern] [COUNT count] 参考SCAN命令

差集 交集 并集

差集

ZDIFF numkeys key [key …] [WITHSCORES]
 numkeys :key 的数量

K1 对k2的差集

redis 列出 list redis sorted list_java_15


k2对k1的差集

redis 列出 list redis sorted list_spring_16

交集

ZINTER numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]


numkeys :key的数量
WEIGHTS :乘法因子;你可以为每个给定的有序集指定一个乘法因子,意思就是,每个给定有序集的所有成员的score值在传递给聚合函数之前都要先乘以该因子。如果WEIGHTS没有给定,默认是 1。
AGGREGATE :聚合函数,两个key之间的计算方式

举例: 求k1 和k2的交集, 交的分值等于 scores=k1_scores3+k1_scores2

redis 列出 list redis sorted list_java_17


ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

将求取的交集保存到一个新的集合中

redis 列出 list redis sorted list_java_18

并集

**

不保存到新集合:

ZUNION numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]

保存到新集合:

ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]**

redis 列出 list redis sorted list_redis 列出 list_19