Redis初识第七期---ZSet的命令和应用场景

ZSet相较于Set来说,它又是有序的,这个有序指的就是我们通常意义上的有序了,ZSet内部中是按照升序来排序的。

排序规则:ZSet相较于Set来说,它内部引入了一个新的属性:分数(Score),浮点类型,对于每一个member都有一个Score与之对应,member是要求唯一的,但是Score是可以重复的,排序的依据就是Score,如果Score重复的话,则按照字典序进行排序。

命令

普通操作

1.Zadd

完整语法:

Zadd key [NX|XX]   [GT|LT]   [ch] [Incr]  Score member  [Score  member.....]

作用是添加元素。时间复杂度为O(logn)。

参数:

[NX|XX]:NX表示只添加不更新,如果已经存在,即使Score不同也会添加失败。XX:表示只更新,不添加。默认情况为不存在就添加,存在的话就更新分数。

[GT|LT]:GT表示比原来Score大才更新,LT就表示比原来Score分数小才更新。

[CH]:不写CH返回的是添加的个数,如果写上CH则将更新的也包含在内。主要适用于XX,因为它只更新不添加,返回值默认为0。

[Incr]:对元素进行加减操作,默认为加,减的话使用负数来实现,使用后后面就只能指定一个Score和member了。(不能同时对多组member进行操作)。

2.Zrange

和List中Lrange类似,可以查询一对下标构成的空间,但是Zrange可以在下标后加上WithScores来同时查询member和Score,时间复杂度为O(logn);

3.Zcard 

Zcard key

获取key中的元素个数。

4.ZCount key min max

获取Score在min和max中的元素个数,值得注意的是Max和Min为闭区间,如果想要为开区间可以在前面加上(,即(min (max,同时Redis引入了两个特殊值:inf:表示无穷大,-inf:表示无穷小。

5.Zrevrange

用法和Zrange一样,只不过是逆序返回罢了。

阻塞版本命令

6.ZpopMax

ZpopMax key [count]

删除并返回分数最高的count个元素。

7.BzpopMax

BzpopMax key[key....] timeout

ZpopMax的阻塞版本,提供timeout来指定最长阻塞时间,支持小数,单位s。但是和ZpopMax不同的是不可以指定删除的个数。

8.ZpopMin

ZpopMin key [count]

删除Zset中Score最小的count个元素。

9.BzpopMin key[key...] timeout

和BzpopMax用法一样,这里不做过多赘述。

值得注意的是以上操作的时间复杂度都是O(logn)(内部编码为ziplist时为O(N)),这是因为SkipList没有维护头部指针和尾部指针,即使是头/尾删,仍然需要遍历。

10.Zrank key member

时间复杂度为O(logN)。

作用是获取key中member的排名(下标)。

11.ZrevRank key member

也是获取member的排名,只不过是逆序(降序)。

12.Zscore key member

查找指定元素的分数,但是时间复杂度为O(1)!,这是因为Redis同时维护了一个哈希表,使得查找复杂度为O(1)。

13.Zrem key member [member....]

删除指定的元素,返回删除的个数。

14.ZremRangeByRank key start stop 

范围删除,把从start到stop之间的全删了(根据下标)。

15.ZremRangeByScore key  min max

指定一个删除区间,通过分数来描述。

16.ZincrBy key increment member

给指定的member增加increment(支持小数)。

集合间操作

Zinter,Zunion,Zdiff从Redis6.2才支持,用法和ZinterStore,ZunionStore类似,这里不过多解释了。

17.ZinterStore

ZinterStore destination numbers  key [key.....] [weights....] [Aggregate <Sum|Min|Max>]

求并集并存储到destination中。

numbers:指定有多少个key参与运算,避免key和后面的参数混肴。

weights:权重,就是每个key中Score要乘的倍数,如果要使用的话,前面必须要加上weights关键字。

Aggregate <Sum|Min|Max>:Sum表示取分数之和(默认情况),Min表示取分数最小的,Max表示取分数最大的,使用前要加上Aggregate关键字。

18.ZunionStore

ZunionStore destination bunbers key[key....] [weights...] Aggregate <Sum|Min|Max>]

用法和ZinterStore一样,只不过求的是合集罢了。

Zset内部编码

1.ziplist

如果有序集合的元素比较少而且单个元素的体积较小,使用ziplist存储。

2.skipList

复杂的链表,一个节点上有很多的指针,让查询时间更短(O(logn))。

Zset应用场景

1.最常见的场景,排行榜系统。

2.还可以使用集合操作来对热点信息进行排序,例如微博热度可以使用加权对评论,转发,浏览来进行加权,得出一个分数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912738.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wps开放平台v5升级v7上传实体文件踩坑(Java使用restTemplate)

背景&#xff1a; 最近接到一个老项目需求&#xff0c;之前开发的WPS开放平台文件&#xff08;商密集成&#xff09;预览功能因为升级需要重新对接api&#xff0c;新的上传文件接口踩坑特意记录一下。 这里出问题的是第二步&#xff0c;请求文件上传信息 踩坑代码 调用后403 p…

啥时候上RAG?啥时候上微调?丨实战笔记

哈喽&#xff0c;大家好&#x1f44f; 我是阿星&#xff01; 现在很多AI科普文章都会提到微调&#xff0c;RAG。 但是没有实战的过的同学可能会问&#x1f914;—— 啥时候用RAG&#xff1f;啥时候用微调呢&#xff1f;有啥区别&#xff1f;不都是让模型增加知识面的吗&…

RabbitMQ-基础篇

前言&#xff1a; 今天开始学RabbitMQ,还是跟着黑马的课程。 今日所学&#xff1a; RabbitMQ介绍RabbitMQ入门Java客户端中的MQ 1.RabbitMQ介绍 1.1 什么是RabbitMQ RabbitMQ 是一个开源的消息代理软件&#xff08;消息队列中间件&#xff09;&#xff0c;实现了高级消息…

docker-compose配置redis哨兵详细步骤和配置文件

docker-compose配置redis哨兵详细步骤和配置文件 目录结构调整 redis-cluster/ ├── config/ │ ├── master.conf # 主节点配置 │ ├── slave1.conf # 从节点1配置 │ ├── slave2.conf # 从节点2配置 │ ├── sentinel1.…

多模态大语言模型arxiv论文略读(146)

Exploring Response Uncertainty in MLLMs: An Empirical Evaluation under Misleading Scenarios ➡️ 论文标题&#xff1a;Exploring Response Uncertainty in MLLMs: An Empirical Evaluation under Misleading Scenarios ➡️ 论文作者&#xff1a;Yunkai Dang, Mengxi G…

【教程】Linux中限制用户可以使用的GPU数量 | 附脚本

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 背景说明 设置方法 管理脚本 进阶限制 恢复默认组 注意事项 背景说明 比较简单的方式是使用group来管理权限&#xff0c;这种方式能限制哪些…

90.xilinx复位低电平(一般使用低电平复位)

Xilinx FPGA 中的寄存器&#xff08;Flip-Flop&#xff09;**确实支持异步复位**&#xff0c;但具体实现方式取决于你使用的设计方法&#xff08;HDL 代码风格或原语实例化&#xff09;。以下是详细说明&#xff1a; --- ### 1. **Xilinx 寄存器的复位特性** - **同步复位…

NVMe高速传输之摆脱XDMA设计10: DMA 控制单元设计

DMA 控制单元负责控制 DMA 传输事务&#xff0c; 该单元承担了 DMA 事务到 NVMe 事务的转换任务&#xff0c; 使用户对数据传输事务的控制更加简单快捷。 DMA 控制功能由 DMA寄存器组实现。 DMA 寄存器组包含 DMA 操作寄存器、 DMA 长度寄存器、 DMA 源目的地址寄存器和 DMA 状…

如何设置电脑定时休眠?操作指南详解

长时间运行电脑会导致硬件过热&#xff0c;缩短其使用寿命。定时关机有助于让硬件得到休息&#xff0c;降低因长时间高负荷工作导致损坏的风险。 它的界面简洁直观&#xff0c;功能却十分实用&#xff0c;涵盖了定时关机、重启、注销、休眠、待机以及锁定等多种操作。 以设置“…

LeetCode[617]合并二叉树

思路&#xff1a; 我们合并左右子树&#xff0c;在递归左右子树的时候&#xff0c;一定要保证左右子树不为空&#xff0c;如果左子树为空&#xff0c;那么直接返回右子树就行了&#xff0c;即使右子树为空。如果右子树为空那么直接返回左子树就行了&#xff0c;这样判断完就正常…

Redis 常用五大数据类型

1、Redis 关键字&#xff08;Key&#xff09; keys * 查看当前库所有keyexists [key] 判断某个key是否存在type [key] 查看当前key的数据类型del [key] 删除指定的key数据unlink [key] 根据value选择非阻塞删除&#xff0c;仅将keys从keyspace元数据中删除&#xff0c;真正的删…

大语言模型(LLM)专业术语汇总

1. 训练与部署 1.1 预训练 专业&#xff1a;在海量无标注文本&#xff08;如Common Crawl、Wikipedia&#xff09;上通过自监督学习训练基础语言模型&#xff0c;学习通用语言表征&#xff08;如GPT-3训练数据达45TB&#xff09;。通俗&#xff1a;AI的“通识教育阶段”&…

【Java Swing 图形界面编程】JList 列表组件 ① ( JList 组件简介 | 核心作用 | 关键特性 | 基础用法示例 )

文章目录 一、JList 组件简介1、JList 概念简介2、JList 核心作用3、JList 关键特性 二、JList 组件基础用法示例1、使用 String 数组构建列表项2、使用 Vector 集合构建列表项3、使用 DefaultListModel 构建列表项 一、JList 组件简介 1、JList 概念简介 基本概念 : JList 组件…

【小技巧】Python+PyCharm IDE 配置解释器出错,环境配置不完整或不兼容。(小智AI、MCP、聚合数据、实时新闻查询、NBA赛事查询)

报错信息如下&#xff1a; [unsupported] Python 3.1 (mcp-calculator-main) (3) C:\Users(xsshu\AppData\Local\Programs\Python\Python313\python.exe [unsupported] Python 3.1 C:\Users\xsshu\AppData\Local\Programs\Python\Python311\python.exe 这条输出显示了两个 Pyth…

Ragflow 前后端登录逻辑

前端登录逻辑 路由配置&#xff1a; /login 路由指向 /pages/login 组件。登录表单使用 Ant Design 的 Form, Input, 和 Button 组件。 登录表单处理&#xff1a; 使用 useLogin钩子来处理登录请求。密码通过 RSA 加密后再发送到服务器。成功登录后导航至 /knowledge 页面。 …

基于图神经网络的ALS候选药物预测模型设计与实现

基于图神经网络的ALS候选药物预测模型设计与实现 一、任务背景与意义 肌萎缩侧索硬化症(ALS)是一种致命的神经退行性疾病,目前尚无有效治愈方法。传统药物发现流程耗时长、成本高,而人工智能技术为加速药物发现提供了新途径。本文设计并实现了一个基于图神经网络(GNN)的…

运维打铁: 数据加密与备份恢复策略制定

文章目录 思维导图一、数据加密1. 加密算法选择AES 加密示例&#xff08;Python&#xff09;RSA 加密示例&#xff08;Python&#xff09; 2. 密钥管理3. 加密范围 二、数据备份1. 备份类型全量备份增量备份差异备份 2. 备份频率3. 备份存储位置 三、数据恢复1. 恢复测试2. 恢复…

AIbase MCP服务库上线:集成服务器、客户端、案例教程等服务

在当今数字化时代&#xff0c;人工智能技术正以前所未有的速度发展&#xff0c;深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力&#xff0c;离不开高效的工具和服务支持。今天&#xff0c;就让我们来了解一下一个专注于MCP&#xff08;Model Context Protocol&am…

QGIS+CesiumIon

前言 QGIS 3.44中&#xff0c;新增了3D 场景新增地球视图模式&#xff0c;通过Cesium ion插件&#xff0c;支持谷歌全球倾斜模型的加载显示。 目录 1 CesiumIon插件安装 2 加载谷歌全球倾斜模型 1、CesiumIon插件安装 点击菜单【Plugins】->【Manage and Install Plugins】…

TEXT Introduction

我们是谁 美国计算机奥林匹克竞赛通过培训、竞赛和国际比赛来促进大学前的计算机学习。 数个教练将会组织、领导、陪伴代表美国参加国际性奥林匹克竞赛的学生。 你可以在 USACO 官网了解更多。 USACO 的目标 USACO 的具体目标包括&#xff1a; 训练美国的队伍并且在下一届奥…