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

Redis实战(3)-- 高级数据结构zset

有序集合(ZSET):

可以用作相关有序集合相对于哈希、列表、集合来说会有一点点陌生,但既然叫有序集合,那么它和集合必然有着联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数( score)作为排序的依据。

有序集合中的元素不能重复,但是score可以重复,就和一个班里的同学学号不能重复,但是考试成绩可以相同。

有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能,合理的利用有序集合,能帮助我们在实际开发中解决很多问题。

使用场景

有序集合比较典型的使用场景就是排行榜系统。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数。

补充】但是实际zrank进行排名,是异步定时执行的,不会进行每秒进行算一次,因为算一次消耗很大。

集合内操作命令
zadd添加成员

返回结果代表成功添加成员的个数

要注意:

zadd命令还有四个选项nx、xx、ch、incr 四个选项

nx: member必须不存在,才可以设置成功,用于添加。

xx: member必须存在,才可以设置成功,用于更新。

ch: 返回此次操作后,有序集合元素和分数发生变化的个数

incr: 对score做增加,相当于后面介绍的zincrby

zcard 计算成员个数

zscore 计算某个成员的分数常用

如果成员不存在则返回nil

zrank计算成员的排名常用

zrank是从分数从低到高返回排名

zrevrank反之

很明显,排名从0开始计算。

zrem 删除成员

允许一次删除多个成员。

返回结果为成功删除的个数。

zincrby 增加成员的分数

zrange和zrevrange返回指定排名范围的成员常用

有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之。如果加上

withscores选项,同时会返回成员的分数

zrangebyscore返回指定分数范围的成员

zrangebyscore key min max [withscores] [limit offset count]

zrevrangebyscore key max min [withscores][limit offset count]

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之。例如下面操作从低到高返回200到221分的成员,withscores选项会同时返回每个成员的分数。

同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大:

zcount 返回指定分数范围成员个数

zcount key min max

zremrangebyrank 按升序删除指定排名内的元素

zremrangebyrank key start end

zremrangebyscore 删除指定分数范围的成员

zremrangebyscore key min max

实际案例

zset计算平均分:

当存在多个集合时候,需要计算不同集合同名元素的平均分时候,使用以下操作:

//取一个新集合,将zset1和zset2的值存到zsetavg中,权重比例是对半开

Zinterstore zsetavg 2 zset1 zset2 weights 0.5 0.5

http://www.xdnf.cn/news/1204759.html

相关文章:

  • MySQL5.7主从延迟高排查优化思路
  • Qt:盒子模型的理解
  • 电流变送器电路的分析与计算
  • TCPIP之常用协议
  • LeetCode--50.Pow(x,n)
  • RCLAMP2574N.TCT Semtech:超低钳位TVS二极管 0.5pF超低电容+±30kV超强防护
  • FastGPT本地构建工作流高级编排(最新4.11.0)
  • 【云馨AI-大模型】2025世界人工智能大会引爆全球AI热潮,技术突破与政策布局引领产业新未来
  • 4、如何生成分布式ID?
  • C++中既重要又困难的部分—类和对象
  • 【历史人物】【韩愈】简历与生平
  • sqlite3学习---基础知识、增删改查和排序和限制、打开执行关闭函数
  • 归雁思维:解锁自然规律与人类智慧的桥梁
  • LLM学习笔记5——InstructGPT
  • Kotlin的datetime库
  • Linux内核驱动开发核心问题全解
  • 四、计算机组成原理——第4章:指令系统
  • 基于Spring Boot+Vue的吉他社团系统设计和实现(协同过滤算法)
  • 飞鹤困局:增长神话的裂痕
  • 分布式数据库中的“分布式连接”(Distributed Joins)
  • 轻资产革命:连合直租如何用DaaS模式重塑企业资产逻辑
  • 阿里云 【免费试用】MCP 赋能可视化 OLAP 智能体应用
  • 网络安全第14集
  • React与Rudex的合奏
  • KubeSphere理论及实战
  • ros2的package.xml和rosdep
  • 正则表达式 速查速记
  • haproxy原理及实验演示(实现服务器集群的负载均衡)
  • ubuntu资源共享samba 安装与配置 mac/windows共享ubuntu文件资源
  • 无人机喷洒系统技术要点与难点解析