(6)Redis 数据结构(sorted-set的操作)
第六节:Redis 数据结构之sorted-set 类型
存储Sorted-Set
Sorted-Set和Set的区别
Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-set常用命令
添加元素
获得元素
删除元素
范围查询
扩展命令
zadd 添加元素 里面包括评分和值
127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1
1) "b"
2) "a"
3) "c"
我们添加集合sort1 元素是a,b,c 评分分别是5,4,6
集合里的排序是根据评分从小到大排序的;
继续添加元素
假如此元素集合里面已经有了,则覆盖
127.0.0.1:6379> zadd sort1 7 b (integer) 0 127.0.0.1:6379> zrange sort1 0 -1 1) "a" 2) "c" 3) "b" 127.0.0.1:6379> zscore sort1 b //通过zscore获取b的评分,发现已修改 "7"
假如此元素不在集合里,则添加
127.0.0.1:6379> zadd sort1 9 d
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
4) "d"
删除元素zrem
127.0.0.1:6379> zrem sort1 b
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "d"
zcard 查看集合里的元素个数
127.0.0.1:6379> zcard sort1
(integer) 3
withscores 把评分也显示出来
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "a"
2) "5"
3) "c"
4) "6"
5) "d"
6) "9"
zrevrange 降序排列
127.0.0.1:6379> zrevrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "c"
4) "6"
5) "a"
6) "5"
比如:
我要获取步数排名前三的 member:
zrevrange sport:ranking:20210227 0 2

我要获取步数排名前三的 member和score:

zremrangebyrank 根据排名来删除元素 删除3个
127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "a" 2) "5" 3) "f" 4) "5" 5) "c" 6) "6" 7) "d" 8) "9" 9) "e" 10) "10" 127.0.0.1:6379> zremrangebyrank sort1 0 2 (integer) 3 127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "e" 4) "10"
zremrangebyscore 根据具体评分范围来删除元素
127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "e" 4) "10" 5) "f" 6) "11" 7) "g" 8) "16" 9) "h" 10) "18" 127.0.0.1:6379> zremrangebyscore sort1 10 16 (integer) 3 127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "h" 4) "18"
zrangebyscore 根据评分范围来查找元素
127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "h" 4) "18" 5) "i" 6) "20" 7) "j" 8) "23" 9) "k" 10) "30" 127.0.0.1:6379> zrangebyscore sort1 18 23 withscores 1) "h" 2) "18" 3) "i" 4) "20" 5) "j" 6) "23"
zrank 获取排名,按照分数从低到高
zrank key member
zrevrank 获取排名,按照分数从高到低
zrevrank key member

limit 限定查找起始 类似分页
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2 1) "h" 2) "18" 3) "i" 4) "20"
zincrby 给指定元素加分
127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "h" 4) "18" 5) "i" 6) "20" 7) "j" 8) "23" 9) "k" 10) "30" 127.0.0.1:6379> zincrby sort1 5 h "23" 127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "i" 4) "20" 5) "h" 6) "23" 7) "j" 8) "23" 9) "k" 10) "30"
zcount 查找指定评分范围的元素个数
127.0.0.1:6379> zrange sort1 0 -1 withscores 1) "d" 2) "9" 3) "i" 4) "20" 5) "h" 6) "23" 7) "j" 8) "23" 9) "k" 10) "30" 127.0.0.1:6379> zcount sort1 20 23 (integer) 3
Sorted-Set使用场景
大型在线游戏积分排行榜
构建索引数据
浙公网安备 33010602011771号