当前位置: 首页 > news >正文

Redis 有序集合(Zset / Sorted Set)

Redis 有序集合(Zset / Sorted Set)

Redis 有序集合(Zset / Sorted Set)完整笔记


一、Zset 简介

Redis 有序集合 Zset 与普通集合 Set 类似,是不包含重复元素的字符串集合

核心区别:

  • 每个成员都关联一个 score(评分),集合会按照 score 从小到大排序。
  • 成员是唯一的,但 score 可以重复。
  • 因为元素有序,所以可以快速根据 score 或位置(排名)获取一个范围的元素。
  • 底层类似 Java 中的 Map<String, Double>(存储 value-score 映射),又类似 TreeSet(按 score 排序)。

二、常用命令

命令 语法 作用
zadd zadd <key> <score1> <value1> <score2> <value2> ... 将一个或多个成员及其 score 值加入有序集合
zrange zrange <key> <start> <stop> [WITHSCORES] 返回集合中索引在 [start, stop] 之间的元素;WITHSCORES 会同时返回 score
zrangebyscore zrangebyscore <key> <min> <max> [WITHSCORES] [LIMIT offset count] 返回 score 介于 minmax 之间的成员,按 score 升序排列
zrevrangebyscore zrevrangebyscore <key> <max> <min> [WITHSCORES] [LIMIT offset count] zrangebyscore 类似,改为按 score 降序排列
zincrby zincrby <key> <increment> <value> 为元素的 score 加上指定增量(可正可负)
zrem zrem <key> <value> 删除集合中指定的成员
zcount zcount <key> <min> <max> 统计 score[min, max] 区间内的元素个数
zrank zrank <key> <value> 返回成员在集合中的排名(从 0 开始)

三、典型案例:实现文章访问量排行榜

# 添加数据:文章v1访问量1000,v2访问量2000,v3访问量3000
127.0.0.1:6379> zadd topn 1000 v1 2000 v2 3000 v3
(integer) 3# 按访问量从高到低取前10名,并显示分数
127.0.0.1:6379> zrevrange topn 0 9 withscores
1) "v3"
2) "3000"
3) "v2"
4) "2000"
5) "v1"
6) "1000"

四、底层数据结构

Zset 底层同时使用两种数据结构:

  1. Hash 表:关联 valuescore,保证元素的唯一性,支持通过 value 快速查找 score
  2. 跳跃表(Skip List):用于按 score 对元素进行排序,支持高效的范围查询。

跳跃表(跳表)简介

  • 跳跃表是一种多层链表结构,通过“跳级”指针实现类似平衡树的查找效率,平均时间复杂度为 O(logN),实现远比红黑树简单。
  • 查找示例:查找值为 51 的元素
    • 普通有序链表:需要从 1 开始依次遍历,共需 7 次比较。
    • 跳跃表:通过多层指针“跳跃”查找,仅需 4 次比较即可找到元素,效率显著更高。

五、典型应用场景

  • 排行榜:如游戏积分、文章访问量、用户点赞数排名。
  • 延时队列:将任务的执行时间作为 score,定时轮询获取 score 小于当前时间的任务并执行。
  • 带权重的任务调度:根据任务优先级设置不同的 score,实现按优先级调度。

http://www.zskr.cn/news/1395235.html

相关文章:

  • 1.4t4
  • 从理想模型到现实调度:WFQ算法的公平性保障与实现挑战
  • VMware9.1升级CSR报错修复+vSphere容器与Docker区别详解
  • 2026最危险的AI工具排名——不是垫底的,而是排第4、第6、第9的“高分伪强者”,它们正悄悄拖垮你的交付周期
  • 2026年PMP最佳报考时间已定!过来人建议:优先锁定9月
  • 基于图神经网络与社区检测的教育公平性分析:从数据洞察到精准干预
  • 2026 实测明星同款声音克隆 AI 工具 短视频批量创作合规高还原优选榜单 - 品牌企业推荐师(官方)
  • LoRA微调技术:破解低资源语言机器翻译难题的实践指南
  • 国内AI生图工具性价比之王:100就能get可编辑矢量图
  • 婚恋交友系统源码|线上智能匹配+线下活动联动+实名认证安全社交解决方案
  • 戴森球计划工厂蓝图库:打造星际自动化帝国的终极工具箱
  • 混沌半监督学习:破解工业设备寿命预测的数据与动态难题
  • 收藏!小白程序员必看:AI时代如何转型,构建你的核心竞争力
  • 收藏 | HR深度解析:普通人如何抓住AI风口,找到高薪工作?
  • 收藏!AI大模型内卷终结!摩根大通揭秘国内AI商业化颠覆性变革,小白也能抓住万亿新风口
  • 基于对比学习与智能样本构造的文本分类数据不平衡解决方案
  • 瞬态肌电信号:解码肌肉启动意图,革新假肢仿生控制
  • 基于BERT与迁移学习的罗马乌尔都语抑郁症文本筛查模型构建
  • 基于注意力机制与双向GRU的英语自动评分系统:原理、实现与优化
  • 2026年,杭州这些口碑好的跨境电商咨询服务商,究竟好在哪里? - 品牌企业推荐师(官方)
  • OpenAvatarChat完整指南:5分钟打造你的AI数字人对话系统
  • 井下频频失联,UWB短板频发,无感定位如何破局?
  • 从SQLyog连接失败到MySQL 8.0身份认证机制深度解析
  • 让AI准确读懂你的品牌:GEO内容工程的三个核心原则
  • 基于深度学习的人体行为识别 摔倒识别 跌倒检测 站立识别
  • 【分享】HyperMesh vs SimLab:CAE前处理老司机与智能助手的终极对决
  • Color-X卡乐瓷砖的工艺跟普通瓷砖有什么区别? - 寻茫精选
  • 利用Taotoken多模型能力为AIGC应用构建智能降级策略
  • ARMv8虚拟化:HFGWTR2_EL2寄存器与细粒度陷阱控制
  • 英雄联盟智能助手Seraphine:5分钟掌握游戏信息优势的终极指南