redis zset(sorted set)数据类型的使用 作者:马育民 • 2020-12-24 10:07 • 阅读:10095 # 介绍 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" ``` 原文出处:http://malaoshi.top/show_1IXHSnb1lBJ.html