在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得指定分数范围的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但它们的分数可以相同。
1.增加元素
zadd key score member [score member...]
zadd命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原来的分数。
分数不仅可以是整数,还支持双精度浮点数。
+inf和-inf分别表示正无穷和负无穷。
2.获取元素的分数
zscore key member
3.获取排名在某个范围的元素列表
zrange key start stop [withscores]
zrevrange key start stop [withscores] 按分数从大到小的排序
4.获得指定分数范围的元素
zrangebyscore key min max [withscores] [limit offset count]
zrangebyscore 命令参数虽然多,但是都好理解。该命令按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素。
如果希望分数范围不包含端点值,可以在分数前加上"("符号。如,希望返回80到100分的数据,可以含80分,但不包含100分,则可以这么写:
zrangebyscore zs 80 (100 withscores
了解SQL语句的读者对limit offset count应该很熟悉,在本命令中limit offset count 与SQL中的用法基本相同,即在获得的元素列表的基础上向后偏移offset个元素,并且只获取前count个元素。
zrevrangebyscore key max min [withscores] [limit offset count]
5.增加某个元素的分数
zincrby key increment member
6.获得集合中元素的数量
zcard key
7.获得指定分数范围内的元素个数
zcount key min max
8.删除一个或多个元素
zrem key member [member...]
9.按照排名范围删除元素
zremrangebyrank key start stop
zremrangebyrank 命令按照元素分数从小到大的顺序(即索引0表示最小的值)删除处在指定排名范围内的所有元素。
10.按照分数范围删除元素
zremrangebyscore key min max
11.获得元素的排名
zrank key member
zrevrank key member