有序集合的时间复杂度是O(log(N))
1、增加元素
ZADD key score member[score member...]
ZADD命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原来的分数。
ZADD返回的是新加入到集合中元素的个数(不包含之前已经存在的元素)。
分数支持双精度浮点数。+inf和-inf分别表示正无穷和负值
支持两个元素的分数相同。
2、获得元素分数
ZSCORE key member
3、获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES] start 和 stop指的是元素位置
ZREVRANGE key start stop [WITHSCORES] 按照分数从大到小
ZRANGE命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端元素),负值代表从后向前查找
WITHSCORES会带分数返回,如果两个元素分数一样,会按照字典顺序来进行排序;
时间复杂度O(logn+m),n为有序集合的基数,m为返回元素个数。
4、获得指定分数范围内的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
1)该命令按照元素从小到大的顺序返回分数在min和max之间(包含min和max)的元素
2)如果不想包含端点,可以在分数前面加上"(",例如 ZRANGEBYSCORE board 80 (100
3)也支持-inf 和+inf
4)[LIMIT offset count] 和SQL中用法类似 向后偏移offset个元素,并且只获取前count个元素
例如ZRANGEBYSCORE board 60 +inf LIMIT 1 3 是获得分数高于60分的从第二个人开始的三个人
5、增加某个元素分数
ZINCRBY key increment member
返回值是更改后的分数
6、获得集合中元素的数量
ZCARD key
7、获得指定范围内元素个数
ZCOUNT key min max
8、删除一个或多个元素
ZREM key member[memeber...]
9、按照排名范围删除元素
ZREMRANGEBYRANK key start stop
按照分数从小到大的顺序(即索引0表示最小的值)删除在指定排名范围内的所有元素,并返回删除元素数量
10、按照分数范围删除元素
ZREMRANGESCORE key min max
11、获得元素的排名
ZRANK key member 从0开始 即分数最小的元素排名为0
ZREVRANK key member 逆向排序 分数最大的为0
12、计算有序集合的交集
ZINTERSTORE destination numkeys key [key...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
ZINTERSTORE命令用来计算多个有序集合的交集并将结果存储在destination键中(同样以有序集合类型存储),返回值是destination键中元素个数
1)当AGGREGATE是sum时destination 键中元素分数是每个参与计算的集合中该元素分数的和。
2)当AGGREGATE是min时destination 键中元素分数是每个参与计算的集合中该元素分数最小值。
3)当AGGREGATE是min时destination 键中元素分数是每个参与计算的集合中该元素分数最大值。