Redis开发运维实践数据操作有序集合操作

2.5.1 添加元素


zadd key score member

添加元素到集合,元素在集合中存在则更新对应score。


2.5.2 删除元素


zrem key member

1表示成功,如果元素不存在返回0

zremrangebyrank key min max

删除集合中排名在给定区间的元素

zremrangebyscore key min max

删除集合中score在给定区间的元素


2.5.3 增加score


zincrby key incr member

增加对应member的score值,然后移动元素并保持skip list保持有序。返回更新后的score值,可以为负数递减


2.5.4 获取排名


zrank key member

返回指定元素在集合中的排名(下标,注意不是分数),集合中元素是按score从小到大排序的

zrevrank key member

同上,但是集合中元素是按score从大到小排序


2.5.5 获取排行榜


zrange key start end

类似lrange操作从集合中去指定区间的元素。返回的是有序结果

zrevrange key start end 同上,返回结果是按score逆序的,如果需要得分则加上withscores

注:index从start到end的所有元素


2.5.6 返回给定分数区间的元素


zrangebyscore key min max

可以指定inf为无穷


2.5.7 返回集合中score在给定区间的数量


zcount key min max


2.5.8 返回集合中元素个数


zcard key


2.5.9 返回给定元素对应的score


zscore key element


2.5.10 评分的聚合


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

例如:


127.0.0.1:6379> zrangebyscore votes -inf inf withscores

1) "sina"

2) "1"

3) "google"

4) "5"

5) "baidu"

6) "10"

127.0.0.1:6379> zrangebyscore visits -inf inf withscores

1) "baidu"

2) "1"

3) "google"

4) "5"

5) "sina"

6) "10"

127.0.0.1:6379> zunionstore award 2 visits votes weights 1 2 aggregate sum

(integer) 3

127.0.0.1:6379> zrangebyscore award -inf inf withscores

1) "sina"

2) "12"

3) "google"

4) "15"

5) "baidu"

6) "21"

一个小技巧是如果需要对评分进行倍加,则使用如下的方法:

127.0.0.1:6379>zrangebyscore visits -inf inf withscores

1) "baidu"

2) "1"

3) "google"

4) "5"

5) "sina"

6) "10"

127.0.0.1:6379>zunionstore visits 1 visits weights 2

(integer) 3

127.0.0.1:6379>zrangebyscore visits -inf inf withscores

1) "baidu"

2) "2"

3) "google"

4) "10"

5) "sina"

6) "20"


**本文为《Redis开发运维实践指南》内容,该书作者为黄鹏程,已授权云栖社区转载。**

上一篇:二进制免编译MYSQL主从配置


下一篇:redis必杀命令:有序集合(sorted set)