【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来使用,只是说提供了一种思路,学习一种机制,可以考虑其他方式的有序集合,或者基于跳表写一个。

相关推荐
吹什么轩6 分钟前
MySQL:数据库基础
数据库·mysql
内存漫游6 分钟前
Undo、Redo 与事务回滚
数据库
FluxDB13 分钟前
用 Rust + GPUI 重做数据库客户端
数据库·mysql
烬羽19 分钟前
PostgreSQL:AI 时代原生的"隐型"向量数据库 — 用 pgvector 给消息表加上长期记忆
数据库·人工智能·程序员
Yyyyyy~27 分钟前
【Mysql】增删查改操作
数据库·mysql
钱栈up1 小时前
前端改了三页、后端也动了,用户说「完全没变化」——我在 116 库上找到的三个真凶
css·数据库
这个DBA有点耶1 小时前
索引建了查询却更慢——优化器选错索引与Index Merge的隐藏代价
数据库·架构·代码规范
云贝贝贝1 小时前
删了却没变小:PostgreSQL 死元组与表膨胀排查
数据库·postgresql
依晨照旧1 小时前
Langfuse 打爆两台机器:一条分位数 SQL,在 400G 表上扫了 8 分钟
数据库
2601_968900772 小时前
推理部署配置实践:缓存窗口、硬件配比与协议统一的核查清单
缓存