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

Redis Sorted Set(有序集合)详解

Redis 里面有一种非常强大的数据结构Sorted Set有序集合简称ZSet这是 Redis 面试和项目里非常高频的东西。一、什么是 Sorted Set先记住一句话Sorted Set 自动排序的 Set它具备Set 的去重 自动排序两个特性。二、为什么需要 Sorted Set普通 Set只能去重 不能排序例如张三 李四 王五但是很多场景需要排名 需要分数 需要排行榜例如用户分数张三100李四80王五120这时候Sorted Set 就非常适合三、Sorted Set 的结构它本质value score例如zhangsan - 100 lisi - 80 wangwu - 120Redis 会根据 score 自动排序四、为什么叫 ZSetRedis 命令Sorted Set前面都带Z例如ZADD ZRANGE ZREM所以很多人直接叫ZSet五、Sorted Set 最大特点1. 自动排序Redis 自动按 score 排序。2. 元素唯一和 Set 一样value 不能重复3. 可以范围查询例如前10名 分数100以上非常适合排行榜。六、Sorted Set 最经典场景1. 游戏排行榜用户 - 分数2. 热搜榜关键词 - 热度3. 点赞排行文章 - 点赞数4. 直播打赏榜用户 - 打赏金额七、核心命令最核心ZADD ZRANGE ZREM ZSCORE八、添加数据ZADDZADD rank100zhangsan意思往 rank 这个有序集合里 添加 zhangsan - 100再添加ZADD rank80lisi ZADD rank120wangwu现在rank: lisi - 80 zhangsan - 100 wangwu - 120Redis 自动排序。九、查看数据ZRANGE从小到大ZRANGE rank0-1输出lisi zhangsan wangwu十、为什么是 0 -1Redis0 第一个 -1 最后一个所以0 -1表示全部数据十一、查看分数ZRANGE rank0-1WITHSCORES输出lisi 80 zhangsan 100 wangwu 120十二、倒序排行榜重点排行榜一般分数高的在前面所以使用ZREVRANGE rank09WITHSCORES意思按分数从大到小 取前10名十三、删除元素ZREM rank lisi删除lisi十四、获取分数ZSCORE rank zhangsan输出100十五、获取排名重点从小到大排名ZRANK rank zhangsan从大到小排名ZREVRANK rank zhangsan排行榜开发里非常常见。十六、Redis 为什么适合排行榜因为Sorted Set 底层跳表 哈希表查询排名速度非常快。十七、Go 操作 Sorted SetGo Redisgithub.com/redis/go-redis/v9十八、添加数据rdb.ZAdd(ctx,rank,redis.Z{Score:100,Member:zhangsan,})十九、再添加rdb.ZAdd(ctx,rank,redis.Z{Score:80,Member:lisi},redis.Z{Score:120,Member:wangwu},)二十、获取排行榜result,_:rdb.ZRevRangeWithScores(ctx,rank,0,9).Result()fmt.Println(result)二十一、返回结果类似[{wangwu 120} {zhangsan 100} {lisi 80}]说明已经自动排序二十二、Sorted Set 底层思想你要理解Sorted Set 本质不是普通数组排序而是Redis 内部维护有序结构所以插入时就已经排序好了二十三、为什么比 MySQL 快如果 MySQL 做排行榜ORDERBYscoreDESC数据量大会很慢。Redis天然维护有序结构所以排行榜场景Redis 非常强。二十四、实际项目案例热搜榜mysql redis go gin热度mysql - 1000 redis - 1500 go - 900存进ZSet然后ZREVRANGE hot09直接获取热搜前10二十五、总结Sorted Set 本质带分数的自动排序集合核心结构member score核心特点自动排序 元素唯一 支持排名 支持范围查询最经典场景排行榜 热搜榜 积分榜 点赞榜核心命令命令作用ZADD添加ZRANGE正序查看ZREVRANGE倒序查看ZREM删除ZSCORE查看分数ZRANK查看排名真实开发只要涉及排行榜 几乎都会想到 Redis Sorted Set
http://www.zskr.cn/news/1320271.html

相关文章:

  • 避坑指南:压缩感知算法OMP、CoSaMP选型时,别再忽略这3个关键参数了
  • iTop开源ITSM平台:企业级CMDB与工单系统的架构深度解析
  • Windows跑深度学习模型报‘页面文件太小’?别急着加内存条,先试试给D盘加虚拟内存
  • 基于ESP32-C3的像素时钟与音乐频谱DIY:从FFT到WS2812的嵌入式实践
  • 都 2026 年了,竟然还有人在翻我 2023 年的“保姆级”旧贴?
  • 2026铸铝门厂家五大评测:源头实力与品质服务大盘点 - 门业测评
  • Midscene.js实战指南:3步构建跨平台AI自动化测试,效率提升70%
  • 7步掌握FanControl:Windows风扇控制终极指南,打造静音高效散热系统
  • Qt MQTT实战:从零构建阿里云IoT设备管理客户端
  • 扛住十万并发的“冷面保安”:一文扒透限流的四大经典算法与代码实战
  • 如何扛住十万级流量洪峰?扒开高并发架构的五层防御体系
  • NAS如何变身创作利器?基于绿联DX4600 Pro自建图床与Typora无缝协作
  • 【会议征稿通知 | 内蒙古工业大学主办 | IEEE出版 | EI 、Scopus稳定检索】第二届储能及能源转换国际学术会议(ESEC 2026)
  • 在Hermes Agent工具链中集成Taotoken作为自定义模型供应商的步骤
  • Nodejs后端服务快速集成,使用Taotoken统一调用多款大模型
  • 如何选择美团淘宝闪购外卖代运营服务:以一棵大树为例 - 行业观察日记
  • 致远OA表单开发实战:用Groovy脚本搞定明细表间人员查重(附完整代码)
  • 2026香港卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房隔热 本地专业防水公司TOP5权威推荐(2026年5月本地最新深度调研) - 防水百科
  • 告别云端API调用!用PyCharm+Streamlit在本地为Baichuan2大模型打造一个专属聊天界面(Windows11/RTX3060环境)
  • 2026银川卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房隔热 本地专业防水公司TOP5权威推荐(2026年5月本地最新深度调研) - 防水百科
  • 2026年洛阳本地生活推广与AI获客全域运营方案深度测评 - 精选优质企业推荐官
  • 院校智慧校园一体化平台采购选型指南:学工与教工系统统一建设方案
  • ToDesk配置文件config.ini全解析:从安全设置到代理配置,一篇搞定
  • JPEXS Free Flash Decompiler终极指南:从零开始掌握SWF逆向工程
  • 如何永久免费解锁Cursor Pro:终极指南让你告别试用限制
  • GD32F450串口DMA接收实战:告别频繁中断,用空闲中断+DMA搞定不定长数据
  • 3分钟解决游戏操作冲突:Hitboxer SOCD工具让你的键盘操作职业化
  • Cloudflare Workers 还能这么玩?一个脚本搞定GitHub文件、Release、Raw内容全网加速
  • Ansys Sherlock热力耦合实战:手把手教你用Icepak+Mechanical完成PCB热应力分析
  • CaptfEncoder:网络安全工作者的瑞士军刀,如何一站式解决编码加密难题?