【Redis】Zset类型、命令及应用场景

Redis Zset

Zset是Set的一种有序形式,为每个元素添加了score,且默认是升序的。

Zset依旧有Set相同的特性,如元素member是唯一的,zset则是给每个元素同时引入了score属性(浮点数),依照score大小给元素进行排序,根据分数排名拥有下标

若分数一致,则member排序依据字典排序

命令

编码方式

  • ziplist:若有序集合中元素个数较少,或单个元素体积较小,则用ziplist,节省空间
  • skiplist:否之则用跳表

应用场景

  • 排行榜积分系统

如热度排行榜,玩家游戏榜等等,根据member中的score进行排名

一般来说,排行榜的分数联系到多方面的综合评价,**++每个维度的权重++**都不一样,根据每个维度,计算综合得分,就有了热榜

此时就可以借助zinsertstore / zunionstore 方法按照加权的方式处理。

如把每个维度的数值都放到一个有序集合(Zset)中,member就是微博id,score就是各自维度的数值。通过zinsertstore / zunionstore 把上述有序集合按照约定好的权重进行集合之间的运算,得到的结果集合的分数就是热度(排行榜)

当然,排行等这些系统不一定非要Redis zset来使用,只是说提供了一种思路,学习一种机制,可以考虑其他方式的有序集合,或者基于跳表写一个。

相关推荐
吴名氏.1 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年1 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv
我不会起名字3222 小时前
会话缓存失效排查:区分 Redis 失效与节点广播
redis·后端·go·即时通讯·im·故障排查
可乐ea2 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
阿义有问题4 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
猫猫不是喵喵.6 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
lsc_blog7 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
墨痕诉清风8 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
aiks_yuan8 小时前
Redis 大key怎么排查和删除:--bigkeys 每类只报一个,DEL 百万字段的 Hash 卡 0.3 秒(Redis 7.2 实测)
redis
Ashe81310 小时前
MySQL 慢日志先别急着加索引:三个指标能拦掉大半误判
数据库