目录
sorted-set和set主要区别:
sorted-set都有一个分数与之关联,redis利用分数进行从小到大排序。分数可以重复。
sorted-set中的成员在集合中的位置是有序的。
(游戏排名,微博热点)
常用命令
添加元素:zadd,已经存储在元素的时候,会用新的分数,替换原来的分数。个数不显示,值不添加。
127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
127.0.0.1:6379> zadd mysort 100 zs
(integer) 0
127.0.0.1:6379> zadd mysort 60 hh
(integer) 1
获得元素:zscore mysort zs
127.0.0.1:6379> zscore mysort zs
"100"
获得具体成员的数量:zcard
127.0.0.1:6379> zcard mysort
(integer) 4
删除元素:zrem
127.0.0.1:6379> zrem mysort ww
(integer) 1
127.0.0.1:6379> zcard mysort
(integer) 3
范围查询:zrange 名字 0 -1(从开始到结束)
127.0.0.1:6379> zadd mysort 85 jack
(integer) 1
127.0.0.1:6379> zadd mysort 95 tom
(integer) 1
127.0.0.1:6379> zrange mysort 0 -1
1) "hh"
2) "ls"
3) "jack"
4) "tom"
5) "zs"
显示分数以及数值:(从小到大排序):zrange
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "hh"
2) "60"
3) "ls"
4) "80"
5) "jack"
6) "85"
7) "tom"
8) "95"
9) "zs"
10) "100"
显示分数以及数值:(从大到小):zreverange
127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "zs"
2) "100"
3) "tom"
4) "95"
5) "jack"
6) "85"
7) "ls"
8) "80"
9) "hh"
10) "60"
根据排名范围删除元素:zremrangebyrank
127.0.0.1:6379> zremrangebyrank mysort 0 4
(integer) 5
127.0.0.1:6379> smembers mysort
(empty list or set)
根据分数删除:zremrangebyscore,删除分数之间的值。
127.0.0.1:6379> zadd mysort 80 ls 90 ws 100 hh
(integer) 3
127.0.0.1:6379> zremrangebyscore mysort 80 90
(integer) 2
127.0.0.1:6379> zrange mysort 0 -1
1) "hh"
根据分数查询
127.0.0.1:6379> zrangebyscore mysort 0 100
1) "zs"
2) "ls"
3) "ww"
4) "hh"
127.0.0.1:6379> zrangebyscore mysort 0 100 withscores
1) "zs"
2) "70"
3) "ls"
4) "80"
5) "ww"
6) "90"
7) "hh"
8) "100"
限制2个显示。
127.0.0.1:6379> zrangebyscore mysort 0 100 withscores limit 0 2
1) "zs"
2) "70"
3) "ls"
4) "80"
给分数添加
127.0.0.1:6379> zincrby mysort ls 3
(error) ERR value is not a valid float
127.0.0.1:6379> zincrby mysort 3 ls
"83"
127.0.0.1:6379> zsocre mysort ls
(error) ERR unknown command `zsocre`, with args beginning with: `mysort`, `ls`,
127.0.0.1:6379> zscore mysort ls
"83"
查看个数,分数从80到90的
127.0.0.1:6379> zcount mysort 80 90
(integer) 2
使用场景
(1)用于大型游戏积分排行榜,变化的时候zadd可以更新玩家分数,zrange获取积分,多少用户的信息。
(2)构建索引数据。