介绍
zset(sorted set) 有序集合,和 set 一样也是string类型元素的集合,其元素 不重复
不同的是:每个元素都会 关联 一个double类型的分数。通过分数为元素进行从小到大的排序。
zset的 成员是唯一 的,但 分数(score) 可以重复 。
每个集合中最大的成员数为 2^{32} - 1 (40多亿)
应用场景
排行榜。与list相比,zset更适合 动态 排行榜,根据 score 排序,特别适合 实时更新 的排行榜
类似唱歌比赛,每个歌手唱完,评委都会打分,排行榜会根据分数动态更新
命令
http://redisdoc.com/sorted_set/index.html
https://www.runoob.com/redis/redis-sorted-sets.html
ZADD
ZSCORE
ZINCRBY
ZCARD
ZCOUNT
ZRANGE
ZREVRANGE
ZRANGEBYSCORE
ZREVRANGEBYSCORE
ZRANK
ZREVRANK
ZREM
ZREMRANGEBYRANK
ZREMRANGEBYSCORE
ZRANGEBYLEX
ZLEXCOUNT
ZREMRANGEBYLEX
ZSCAN
ZUNIONSTORE
ZINTERSTORE
例子:热搜
初始化热搜榜
分数表示热度,分数越大,热度越大,在排行榜中越靠近第一
> zadd resou 50 lilei 30 hanmeimei 80 lucy
(integer) 3
显示数据
默认按照 分值 从小到大 排列:
> zrange resou 0 -1 withscores
1) "hanmeimei"
2) "30"
3) "lilei"
4) "50"
5) "lucy"
6) "80"
显示热搜排行榜
按照热度从大到小排列:
> ZREVRANGE resou 0 -1
1) "lucy"
2) "lilei"
3) "hanmeimei"
更新热度
将 成员的 分数加上增量
给 hanmeimei 增加 60 分:
> zincrby resou 60 hanmeimei
"90"
减少热度
给 lucy 减去 10 分:
> zincrby resou -10 lucy
"70"