Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。
在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。
1、ZADD key score member [score] [member]
增加多个成员
127.0.0.1:6379> zadd CountryPower 99 America 90 China 97 Russia 80 Brazil 89 Japan (integer) 5 6379> zrange CountryPower 0 -1 withscores 1) "Brazil" 2) 803) Japan4) 895) China6) 907) Russia8) 979) America" 10) 99"
2、ZREM key member [member ...]
该命令将移除参数中指定的成员,其中不存在的成员将被忽略。
6379> zrem CountryPower Brazil Japan (integer) 2 withscores "
3、ZINCRBY key increment member
为key中的member加指定分数(increment)
6379> zincrby CountryPower 5 China //为中国增加5点 95"
4、Zscore key member
获取指定Key的指定成员的分数
zscore CountryPower China "
5、ZRANK key member
返回成员在列表中的下标
zrank CountryPower Russia (integer) 1
6、ZREVRANK key member
该命令的功能和ZRANK基本相同,唯一的差别在于该命令获取的索引是从高到低排序后的位置,同样0表示第一个元素,即分数最高的成员。
zrank CountryPower America (integer) zrevrank CountryPower America (integer) 0
7、ZCARD key
成员数量
zcard CountryPower (integer) 3
8、ZCOUNT key min max
计算分数在min与max之间的成员数量。针对min和max参数需要额外说明的是,-inf和+inf分别表示Sorted-Sets中分数的最高值和最低值。缺省情况下,min和max表示的范围是闭区间范围,即min <= score <= max内的成员将被返回。然而我们可以通过在min和max的前面添加"("字符来表示开区间,如(min max表示min < score <= max,而(min (max表示min < score < max。
France85German8811) 12) 6379> zcount CountryPower 90 +inf 从90分到最高分 (integer) 3 6379> zcount CountryPower -inf 90 从最低分到90分 (integer) 85 89 从85分(包含)到89分(包含) (integer) 6379> zcount CountryPower (85 (从85分(不包含)到89分(不包含) (integer) 1
---------------------- 范围筛选 ----------------------
9、ZRANGE key start stop [WITHscoreS]
截取范围内的成员(自选带分数)
"
10、ZREVRANGE key start stop [WITHscoreS]
该命令的功能和ZRANGE基本相同,唯一的差别在于该命令是通过反向排序获取指定位置的成员,即从高到低的顺序。
6379> zrevrange CountryPower "
11、ZRANGEBYscore key min max [WITHscoreS] [LIMIT offset count]
返回分数满足表达式min <= score <= max的成员,其中返回的成员是按照其分数从低到高的顺序返回,如果成员具有相同的分数,则按成员的字典顺序返回。LIMIT用于限制返回成员的数量范围。可选参数offset表示从符合条件的第offset个成员开始返回,同时返回count个成员。参数中min和max的规则可参照命令ZCOUNT
6379> zrangebyscore CountryPower 90 99 withscores 95 97 99 99 withscores limit 1 2 从取得的结果,从下标为1开始取,取2个 "
12、ZREVRANGEBYscore key max min [WITHscoreS] [LIMIT offset count]
该命令除了排序方式是基于从高到低的分数排序之外,其它功能和参数含义均与ZRANGEBYscore相同。
------------- 批量删除 -------------
13、ZREMRANGEBYRANK key start stop
删除索引位置位于start和stop之间的成员,start和stop都是0-based,即0表示分数最低的成员,-1表示最后一个成员,即分数最高的成员。
6379> zremrangebyrank CountryPower (integer) "
14、ZREMRANGEBYscore key min max
删除分数在min和max之间的所有成员,即满足表达式min <= score <= max的所有成员。对于min和max参数,可以采用开区间的方式表示,具体规则参照ZCOUNT。