redis zset(sorted set)数据类型的使用

介绍

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"

原文出处:/show_1IXHSnb1lBJ.html