Redis ZSet

Redis ZSet 有序集合 详解 + 应用场景

一、ZSet 是什么

ZSet = Sorted Set 有序集合 底层:跳表 + 哈希表

核心三大特点:

  1. 元素唯一(和 Set 一样,不能重复)
  2. 每个元素带一个 score 分数
  3. 按 score 自动从小到大排序

结构:key → member成员 → score分数

二、和其他类型区别

  • Set:无序、唯一
  • ZSet:有序、唯一、带分数排序

三、常用基础命令

redis

复制代码
# 添加成员 分数+成员
zadd rank 100 张三 90 李四 85 王五

# 从小到大查全部
zrange rank 0 -1 withscores

# 从大到小查
zrevrange rank 0 -1 withscores

# 增加分数
zincrby rank 5 张三

# 删除成员
zrem rank 李四

# 获取个数
zcard rank

四、ZSet 经典应用场景

1. 各种排行榜(最核心)

  • 直播间贡献榜
  • 文章点赞排行榜
  • 学生成绩排名
  • 游戏战力排行榜

原理:把用户 ID / 文章 ID 当 member,点赞数 / 分数当 score,Redis 自动帮你排序。

2. 延时队列 / 定时任务

思路:

  • member:任务 ID
  • score:时间戳 后台程序轮询拿最小时间戳的任务,到点就执行。

3. 带权重的共同好友、智能推荐

配合 zinterstore

  • 求多个人共同好友
  • 按亲密值、互动分做分数加权,重新排序推荐好友

4. 限流、全局排名、实时榜单

实时更新分数,排行榜秒刷新,不用数据库排序,性能爆炸。

5. 新闻 / 帖子 按时间排序

把发布时间戳当 score,新内容分数大,倒序取出就是最新发布列表

6. 热搜排行榜

搜索一次给关键词 score +1,自动实时排行,做热搜榜单完美适配。

五、底层简单一句话

ZSet 底层用跳表 实现,插入、删除、排序都是 O(logn) ,既能保证元素唯一 ,又能自动按分数排序 ,专门用来做各种排行榜、延时队列、加权交集排序

六、总结

Redis ZSet 是有序唯一集合 ,自带 score 分数自动排序;适用场景:各类排行榜、延时队列、热搜榜、时间线排序、带权重共同好友与智能推荐

相关推荐
用户7531057124513 分钟前
五年前我吐槽 PG 的 32 位 XID 是狗皮膏药,今天它被治好了
数据库
DBA_G7 分钟前
从湖仓一体到AI原生:GBase数据库的金融全栈技术实践
数据库
ChenLuck16 分钟前
32 位 XID 的“狗皮膏药”被撕掉了:金仓 V9 的 64 位事务号实测与底层拆解
数据库
旺仔不是程序员29 分钟前
判断存在用 LIMIT 1:PostgreSQL 五种 count 计数方式与 NULL 语义
数据库·后端·sql
旺仔不是程序员30 分钟前
IN 操作规范:PostgreSQL 元素数量、EXISTS 替代与 = ANY 写法
数据库·后端·sql
这个DBA有点耶32 分钟前
异构数据集成方案:跨平台同步的完整指南与工具选型(含实测)
数据库·sql·程序人生·架构·数据库架构·dba
晚安日记wanna39 分钟前
一条 SMEMBERS 干瘫 Redis 节点:单线程的真正边界在哪
redis·后端·面试
蓝速科技42 分钟前
会议室门牌显示模板选型与品牌视觉适配落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
jaysee-sjc1 小时前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
智购科技自动贩卖机1 小时前
自动售货机嵌入式系统时钟同步与时间管理实战:从RTC校准到断网时间保持的工程实践
大数据·linux·数据库·人工智能·yolo