一、特点

        Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

        不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

        有序集合的成员是唯一的,但分数(score)却可以重复。

        集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

二、操作

1)BZPOPMAX key [key ...] timeout        移除并返回一个或多个排序集合中得分最高的成员,或阻塞,直到有一个可用

summary: Remove and return the member with the highest score from one or more sorted sets, or block until one is available
since: 5.0.0

redis sortset判断数据是否存在 redis的sortset_数据库

 

2)BZPOPMIN key [key ...] timeout        移除并返回一个或多个排序集合中得分最低的成员,或阻塞,直到有一个可用

summary: Remove and return the member with the lowest score from one or more sorted sets,or block until one is available
since: 5.0.0

redis sortset判断数据是否存在 redis的sortset_ci_02

 

3)ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]        向已排序的集合添加一个或多个成员,如果集合已经存在,则更新其分数

summary: Add one or more members to a sorted set, or update its score if it already exists
since: 1.2.0

redis sortset判断数据是否存在 redis的sortset_数据库_03

 

4)ZCARD key        得到一个排序集合的成员数

summary: Get the number of members in a sorted set
since: 1.2.0

redis sortset判断数据是否存在 redis的sortset_database_04

 

5)ZCOUNT key min max      对分数在给定值内的排序集合中的成员进行计数  

summary: Count the members in a sorted set with scores within the given values
since: 2.0.0

redis sortset判断数据是否存在 redis的sortset_database_05

 

6)ZDIFF numkeys key [key ...] [WITHSCORES] 求差集

summary: Subtract multiple sorted sets
since: 6.2.0

7)ZDIFFSTORE destination numkeys key [key ...] 求差集并将结果放入另一个集合中

summary: Subtract multiple sorted sets and store the resulting sorted set in a new key
since: 6.2.0

8)ZINCRBY key increment member        递增已排序集合中成员的分数

summary: Increment the score of a member in a sorted set
since: 1.2.0

9)ZINTER numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]        求交集

summary: Intersect multiple sorted sets

since: 6.2.0

10)ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]        与多个排序集相交,并将结果排序集存储在一个新键中

summary: Intersect multiple sorted sets and store the resulting sorted set in a new key
since: 2.0.0

11)ZLEXCOUNT key min max        计算在给定的字典范围之间的排序集合中的成员数

summary: Count the number of members in a sorted set between a given lexicographical range
since: 2.8.9

12)ZMSCORE key member [member ...]        获取一个排序集合中与给定成员相关联的分数

summary: Get the score associated with the given members in a sorted set
since: 6.2.0

13)ZPOPMAX key [count]        移除并返回排序集合中得分最高的成员

summary: Remove and return members with the highest scores in a sorted set
since: 5.0.0

14)ZPOPMIN key [count]          移除并返回排序集合中得分最低的成员

summary: Remove and return members with the lowest scores in a sorted set
since: 5.0.0

15)ZRANDMEMBER key [count [WITHSCORES]]        从一个排序集合中获取一个或多个随机元素

summary: Get one or multiple random elements from a sorted set
since: 6.2.0

16)ZRANGE key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]        返回已排序集合中的成员范围

summary: Return a range of members in a sorted set
since: 1.2.0

17)ZRANGEBYLEX key min max [LIMIT offset count]            按字典序范围返回已排序集合中的成员范围   

summary: Return a range of members in a sorted set, by lexicographical range
since: 2.8.9

18)ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]    按分数返回已排序集合中的成员范围    

summary: Return a range of members in a sorted set, by score
since: 1.0.5

19)ZRANGESTORE dst src min max [BYSCORE|BYLEX] [REV] [LIMIT offset count]        将排序集的成员范围存储到另一个键中

summary: Store a range of members from sorted set into another key
since: 6.2.0

20)ZRANK key member        确定已排序集合中成员的索引

summary: Determine the index of a member in a sorted set
since: 2.0.0

21)ZREM key member [member ...]        从已排序集合中移除一个或多个成员

summary: Remove one or more members from a sorted set
since: 1.2.0

22)ZREMRANGEBYLEX key min max        移除已排序集合中给定词序范围之间的所有成员

summary: Remove all members in a sorted set between the given lexicographical range
since: 2.8.9

23)ZREMRANGEBYRANK key start stop        移除给定索引内已排序集合中的所有成员

summary: Remove all members in a sorted set within the given indexes
since: 2.0.0

24)ZREMRANGEBYSCORE key min max        移除给定分数内已排序集合中的所有成员

summary: Remove all members in a sorted set within the given scores
since: 1.2.0

25)ZREVRANGE key start stop [WITHSCORES]        按索引返回已排序集合中的成员范围,其分数从高到低排序

summary: Return a range of members in a sorted set, by index, with scores ordered from high to low
since: 1.2.0

26)ZREVRANGEBYLEX key max min [LIMIT offset count]        返回已排序集合中的成员范围(按字典序范围从高到低排序

summary: Return a range of members in a sorted set, by lexicographical range, ordered from higher to lower strings.
since: 2.8.9

27)ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]        返回按分数排序的已排序集合中的成员范围,分数从高到低排序

summary: Return a range of members in a sorted set, by score, with scores ordered from high to low
28)since: 2.2.0

29)ZREVRANK key member        确定已排序集合中成员的索引,其分数从高到低排序

summary: Determine the index of a member in a sorted set, with scores ordered from high to low
since: 2.0.0

30)ZSCAN key cursor [MATCH pattern] [COUNT count]        递增迭代排序的集合元素和相关的分数

summary: Incrementally iterate sorted sets elements and associated scores
since: 2.8.0

31)ZSCORE key member        获取与已排序集合中给定成员相关联的分数

summary: Get the score associated with the given member in a sorted set
since: 1.2.0

32)ZUNION numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]        添加多个排序集

summary: Add multiple sorted sets
since: 6.2.0

33)ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]        添加多个排序集并将结果存储在一个新键中

summary: Add multiple sorted sets and store the resulting sorted set in a new key
since: 2.0.0

三、应用场景

1、   排行榜:有序集合经典使用场景。例如视频网站需要对用户上传的视频做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等。

2、用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。