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

redis中的zset类型及其常用命令

有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员
特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)与之关联,这使得有序集合中的元素是可以维护有序性的,但这个有序不是⽤下标作为排序依据⽽是⽤这个分数。member和score称为是一个"pair"。分数不同,按照分数来排。分数相同,按照元素自身字符串的字典序来排列。默认按升序排序

zset常用命令

zadd/zrange/zcard/zcount

zadd:添加或者更新指定的元素以及关联的分数到 zset 中,分数应该符合 double 类型。+inf/-inf 作为正负极限也是合法的。

不添加XX和NX时:如果当前member不存在,此时就会达到“添加新member”的效果。如果当前member已经存在,此时就会更新分数。默认返回新增元素个数

XX:只更新当前存在的。如果不存在就相当于操作失败。

NX:只添加新的,不会更新已经存在的。

LT:less than 在更新分数时,如果发现给定的分数比之前的分数,此时便更新成功。否则不更新。

GT:greater than 在更新分数时,如果发现给定的分数比之前的分数,此时便更新成功。否则不更新。

CH:change 影响zadd的返回值。 不加CH的zadd只会返回新增的元素个数。加了CH,还会返回包含修改的元素个数。

incr:此时命令类似 ZINCRBY 的效果,将元素的分数加上指定的分数。此时只能指定⼀个元素和
分数。

zcard:获取⼀个 zset 的基数(cardinality),即 zset 中的元素个数。

zcount:返回分数在 min 和 max 之间的元素个数,默认情况下,min 和 max 都是包含的,可以通过 ( 排除。给谁加( 就排除谁。

zrange/zrevrange/zrangebyscore

  zrange:查看有序集合中的元素详情。带上 WITHSCORES 可以把分数也返回。

zrevrange:按照分数降序进行遍历并打印。

zrangebyscore:返回分数在 min 和 max 之间的元素,默认情况下,min 和 max 都是包含的,可以通过 ( 排除。

zpopmax/bzpopmax/zpopmin/bzpopmin

zpopmax:删除并返回分数最⾼的 count 个元素。多个元素分数相同,删除的时候,会按照member字符串的字典序决定先后。

bzpopmax:ZPOPMAX 的阻塞版本。在有序集合为空的时候触发阻塞,直到有其他客户端插入元素。timeout是超时时间,单位s

zpopmin:删除并返回分数最低的 count 个元素。

bzpopmin:ZPOPMIN 的阻塞版本。

zrank/zrevrank/zscore

zrank:返回指定元素的排名,升序。

zrevrank:返回指定元素的排名,降序。

zscore:返回指定元素的分数。

zrem/zremrangebyrank/zremrangebyscore/zincrby

zrem:删除指定的元素。

zremrangebyrank:按照下标,升序删除指定范围的元素,左闭右闭。

zremrangebyscore:按照分数删除指定范围的元素,左闭右闭。

zincrby:为指定的元素的关联分数添加指定的分数值。

zinterstore/zunionstore

zinterstore:求出给定有序集合中元素的交集并保存进⽬标有序集合中

destination:要把结果存储到哪个key对应的set中。

numkeys:描述了后续有几个key参与交集运算。

weight:设定各个集合的权重。权重乘以各个集合元素的分数,作为元素新的score。

aggregate:当member相同,score不同时。如果给定的是sum模式,就将相同的member的score相加,合并成一个member。min模式,就取最小的。max模式,取最大的。默认sum模式。

zunionstore:求出给定有序集合中元素的并集并保存进⽬标有序集合中。

zset内部的编码方式

有序集合类型的内部编码有两种:
ziplist(压缩列表):当有序集合的元素个数⼩于 zset-max-ziplist-entries 配置(默认 128 个),同时每个元素的值都⼩于 zset-max-ziplist-value 配置(默认 64 字节)时,Redis 会⽤ ziplist 来作为有序集合的内部实现,ziplist 可以有效减少内存的使⽤。
skiplist(跳表):当 ziplist 条件不满⾜时,有序集合会使⽤ skiplist 作为内部实现,因为此时
ziplist 的操作效率会下降。

zset的应用场景

排行榜

有序集合⽐较典型的使⽤场景就是排⾏榜系统。例如常⻅的⽹站上的热榜信息,榜单的维度可能
是多⽅⾯的:按照时间、按照阅读量、按照点赞量。

以上,关于redis,希望对你有所帮助。


http://www.kler.cn/a/407683.html

相关文章:

  • 瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇
  • 大数据技术之SparkCore
  • Mysql的UPDATE(更新数据)详解
  • 基于YOLOv8深度学习的智慧农业果园果树苹果类果实目标检测系统(PyQt5界面+数据集+训练代码)
  • Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
  • nvm和nrm的安装与使用
  • QT基础教程(QT网络编程)
  • 计算机网络名词解释汇总
  • MySQL 数据库命名及SQL语句书写规范详解
  • Spring ApplicationListener
  • AWTK fscript 中的 大端小端扩展函数
  • 【滤波器】低通、带通、高通滤波器区别及作用
  • 【国产MCU系列】-GD32F470-高级定时器
  • Edify 3D: Scalable High-Quality 3D Asset Generation 论文解读
  • 使用Kubernetes部署第一个应用
  • 华为机试HJ62 查找输入整数二进制中1的个数
  • GESP考试大纲
  • doris的安装部署
  • 用vite下载的react + TS的项目,组件会调用两次
  • Python 快速入门(上篇)❖ Python基础知识
  • 98. 验证二叉搜索树【 力扣(LeetCode) 】
  • 深挖`React`里程碑之作`AutoStore`与`helux`的渊源
  • 开源可视化工具对比:JimuReport VS DataEase
  • Android 设置 bottomnavigation 底部导航栏的样式
  • 【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量
  • 数据指标与标签在数据分析中的关系与应用