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

【redis】zset 类型:基本命令(上)

set 集合:

  1. 唯一
  2. 无序。(顺序不重要)孙行者、行者孙==>同一只猴

list

  1. 有序。(顺序很重要)孙行者、行者孙==>不同的猴

zset

  1. 有序。升序/降序

有序集合

排序的规则是什么?

  • zset 中的 member 引入了一个属性——分数(score),浮点类型
  • 每个 member 都会安排一个分数
    进行排序的时候,就是依照此处的分数大小,来进行升序/降序排序

image.png

  • 分数就是:“武力值

zset 中的 member 仍然要求是唯一的,score 可以重复
zset 主要还是用来存 member 的,score 只是辅助,进行排序

image.png

ZADD

使用 zadd 往有序集合中,添加元素


语法:

ZADD key [NX | XX] [GT | CH] [INCR] score member [score member ...]ZRANGE key start end [withscores]
  • 时间复杂度: O ( l o g N ) O(logN) O(logN) N N N 为有序集合中的元素个数
  • 添加的时候,既要添加元素,又要添加分数。memberscore 称为是一个“pair
    • 不要把 memberscore 理解成“键值对”(key-value pair)。键值对中,是有明确的“角色区分”,谁是键,谁是值,是明确的,一定是根据键找到值

  • XX:只会更新已经存在的元素,不会添加新元素
  • NX:只能添加新元素,不会更新已经存在的元素
  • 都不加
    • 如果当前的 member 不存在,此时就会达到“添加新 member”的效果
    • 如果当前 member 已经存在,此时就会更新分数

  • LTless than):更新分数的时候,要是添加的分数比之前的分数小,此时就更新,否则就不更新
  • GTgreater than):和 LG 相反

  • CHchanged):针对返回值进行描述,影响到 zadd 的返回值
    • 本来 zadd 返回的是新增的元素个数
    • 加了 CH 之后,还会告诉我们修改后的元素个数

  • INCR:能够针对现有元素的分数进行运算

zset 内部实际上就是按照升序方式来排列的

新增

image.png

  • 查询结果降序image.png

修改

image.png|325

如果修改的分数,影响到了之前的顺序,救护级自动移动之前的位置,保证是降序排序

ZCARD

获取一个 zset 的计数,即元素个数


语法:

ZCARD key
  • 返回值:zset 内的元素个数 |262

ZCOUNT

返回分数在 minmax 之间元素的个数,默认情况下 minmax 都是包含的,可以通过 () 排除


语法:

ZCOUNT key min max
  • 时间复杂度: O ( l o g N ) O(logN) O(logN)

    • 先根据 min 找到对应的元素, l o g ( N ) log(N) log(N)
    • 再根据 max 找到对应的元素, l o g ( N ) log(N) log(N)
    • zset 内部,会记录每个元素当前的“排行”/“次序”,查询到元素,就直接知道了元素所在的“次序”,就可以直接把 max 对应的元素次序和 min 对应的元素次序,减法即可
  • 返回值:在区间的元素个数image.png|310

  • minmax 都可以写成浮点数(zset 分数本身就是浮点数)

    • 在浮点数中,存在两个特殊的数值
      • inf:无穷大
      • -inf:负无穷大

ZRANGE/ZREVRANGE

返回指定区间⾥的元素,分数按照升序/降序。带上 WITHSCORES 可以把分数也返回。


语法:

ZRANGE key start stop [withscores]ZREVRANGE key start stop [withscores]
  • 返回区间元素列表image.png|402

ZPOPMAX/ZPOPMIN

删除并返回分数最高/最低count 个元素


语法:

ZPOPMAX key [count]
  • 返回值:分数和元素列表image.png|346

如果存在多个元素,分数相同,同时为最大值,zpopmax 删的时候,仍然只删除其中一个

BZPOPMAX/BZPOPMIN

这里的有序集合,也可以视为一个“优先级队列”,所以有的时候,也需要一个带有“阻塞功能”的优先级队列

每个 key 都是一个有序集合。阻塞也是在有序集合为空的时候触发阻塞,阻塞到有其他客户端插入元素

  • timeout 表示超时时间,单位是秒 s

语法:

BZPOPMAX key [key ...] timeout

image.png

ZRANK/ZREVRANK

返回指定元素的排名,升序/降序


语法:

ZRANK key memberZREVRANKE key member
  • 时间复杂度: O ( N ) O(N) O(N)
  • 排名从 0 开始 image.png

ZSCORE

返回指定元素的分数


语法:

ZSCORE key member 
  • 返回值:分数image.png

相关文章:

【redis】zset 类型:基本命令(上)

set 集合: 唯一无序。(顺序不重要)孙行者、行者孙>同一只猴 list 有序。(顺序很重要)孙行者、行者孙>不同的猴 zset 有序。升序/降序 有序集合 排序的规则是什么? 给 zset 中的 member 引入了…...

3分钟复现 Manus 超强开源项目 OpenManus

文章目录 前言什么是 OpenManus构建方式环境准备克隆代码仓库安装依赖配置 LLM API运行 OpenManus 效果演示总结个人简介 前言 近期人工智能领域迎来了一位备受瞩目的新星——Manus。Manus 能够独立执行复杂的现实任务,无需人工干预。由于限制原因大部分人无法体验…...

【Java篇】一法不变,万象归一:方法封装与递归的思想之道

文章目录 Java 方法的使用:从基础到递归的全面解析一、方法的概念及使用1.1 什么是方法 (method)?1.2 方法定义1.3 方法调用的执行过程1.4 实参和形参的关系1.5 没有返回值的方法 二、方法重载2.1 为什么需要方法重载2.2 方法重载的概念2.2.4 C 和 Java 的比较&…...

SpringBoot解决跨域

将这个类添加到项目中 ResponseAdvice.java package com.example.homeLearn.config;import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; import org.springframework…...

【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-2-性能调优工具箱

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 附录-性能调优工具箱 2-Elasticsearch 性能调优工具箱深度指南一、性能诊断工具集1.1 实时监控工具1.2 慢查询分析 二、硬件与基础架构优化2.1 存储方案选型2.2 JVM调优参数 三、索引…...

UDP协议栈之整体架构处理

在之前的章节中,笔者就UDP、ICMP、IP、ARP、MAC层的报文格式,以及组帧解帧、CRC校验、分片处理等操作进行了具体介绍以及详细代码实现,并且通过了仿真测试。但之前的仿真测试都是对单层报文的组帧解帧进行的,这些模块仍处于“孤立…...

健康医疗:动态代理 IP 保障医疗数据安全,提升远程医疗服务质量!

在数字化浪潮的推动下,远程医疗服务以其便捷性和高效性受到了广泛的关注。然而,随之而来的是数据安全问题,尤其是医疗数据的安全性,成为了制约远程医疗服务发展的关键因素。幸运的是,动态代理IP技术的出现,…...

Navicat SqlServer 设置自增主键

Navicat是一款优秀的数据库管理工具&#xff0c;可以连接很多类型的数据库。使用它可以极大的提高工作效率。 Navicat 不能设置SqlServer自增字段&#xff0c;只能通过sql语句来实现 建表时设置 create table <表名> ( <字段1-主键> int identity (1,1) primar…...

实验8 搜索技术

实验8 搜索技术 一、实验目的 &#xff08;1&#xff09;掌握搜索技术的相关理论&#xff0c;能根据实际情况选取合适的搜索方法&#xff1b; &#xff08;2&#xff09;进一步熟悉盲目搜索技术&#xff0c;掌握其在搜索过程中的优缺点&#xff1b; &#xff08;3&#xff09;…...

IMA+DeepSeekR1+本地知识库撰写NOIP2008普及组T3【传球游戏】题解

目录 一、提问词 二、DeepSeekR1回复 题目描述 解题思路 实现代码 代码说明 三、说明 【IMADeepSeekR1本地知识库】撰写NOIP2008普及组复赛题解系列 1、IMADeepSeekR1本地知识库撰写NOIP2008普及组T1【ISBN 号码】题解-CSDN博客 2、IMADeepSeekR1本地知识库撰写NOIP200…...

查找特定的值(信息学奥赛一本通-1110)

【题目描述】 在一个序列(下标从1开始)中查找一个给定的值&#xff0c;输出第一次出现的位置。 【输入】 第一行包含一个正整数n&#xff0c;表示序列中元素个数。1 <n< 10000。 第二行包含n个整数&#xff0c;依次给出序列的每个元素&#xff0c;相邻两个整数之间用单个…...

Qt项目中集成第三方模块的.pri文件

对于功能模块较多的Qt项目&#xff0c;使用pri文件管理模块文件&#xff0c;降低工程复杂度&#xff0c;提高软件模块的封装性和重用性。 一、.pro与.pri 对于模块化编程&#xff0c;Qt提供了pro和pri&#xff0c;pro管理项目&#xff0c;pri管理模块。 .pro 文件是Qt项目的…...

200多种算法应用于二维和三维无线传感器网络(WSN)覆盖场景

2.1 二元感知模型 在当前无线传感器网络&#xff08;WSN&#xff09;覆盖场景中&#xff0c;最常见且理想的感知模型是二元感知模型[27]。如图2所示&#xff0c; Q 1 Q_1 Q1​和 Q 2 Q_2 Q2​代表平面区域内的两个随机点。 Q 1 Q_1 Q1​位于传感器的检测区域内&#xff0c;其感…...

【QT】文件系统相关 -- QFile

一、Qt 文件概述 &#x1f525; 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类&#xff0c;通过这些类能够对文件系统进行操作&#xff0c;如文件读写、文件信息获取、文件制或重命名等 二、输…...

transformer bert 多头自注意力

输入的&#xff08;a1,a2,a3,a4&#xff09;是最终嵌入&#xff0c;是一个(512,768)的矩阵&#xff1b;而a1是一个token&#xff0c;尺寸是768 a1通过Wq权重矩阵&#xff0c;经过全连接变换得到查询向量q1&#xff1b;a2通过Wk权重矩阵得到键向量k2&#xff1b;q和k点乘就是值…...

人工智能之数学基础:线性变换的象空间和零空间

本文重点 前面的课程中,我们学习了线性变换,由此而引申出线性变换的象空间和零空间,这两个空间在机器学习领域会被经常用到,本文对此进行学习。 直观理解 总的来说象空间就是经过线性变换得到的空间,零空间就是经过线性变换是零的元素构成的空间。 从几何角度来看,象空…...

数据的存储---整型、浮点型

目录 一、整型在内存中的存储 1. 原码、反码、补码 2. 大端与小端 二、浮点数在内存中的存储 1.浮点数的存 2. 浮点数的取 3. 题目解析 一个变量的创建需要在内存中开辟空间&#xff0c;而开辟的空间大小是由数据类型决定的。下面我们就来讨论一下整型、浮点型在内存中的…...

鲸鱼算法WOA对风电场风电机组一次二次调频参数进行全局最优辨识,二次调频参数辩识matlab/simulink,也可进一步修改成一次调频参数辩识

模型为二次调频模型&#xff0c;也可修改为一次调频模型参数辩识 随着风电在电力系统中占比提高,其调频特性对电力系统频率稳定性的影响增大&#xff0c;例如&#xff0c;随着风电渗透水平不断提升&#xff0c;系统惯量不断增加&#xff0c;电力系统频率不断下降&#xff0c;在…...

Spring 中 SmartInitializingSingleton 的作用和示例

一、 接口定义 SmartInitializingSingleton 是 Spring 框架提供的一个 单例 Bean 全局初始化回调接口&#xff0c;用于在 所有非延迟单例 Bean 初始化完成后 执行自定义逻辑。 核心方法&#xff1a; public interface SmartInitializingSingleton {void afterSingletonsInsta…...

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现

《TCP/IP网络编程》学习笔记 | Chapter 18&#xff1a;多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18&#xff1a;多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…...

Unity AI 技术浅析(三):智能代理(Agents)

Unity AI的智能代理(Agents)技术是实现游戏和虚拟现实应用中非玩家角色(NPC)、敌人、盟友等智能行为的核心。通过智能代理,开发者可以为虚拟角色赋予感知、决策和行动的能力,使其能够与环境和其他角色进行复杂的交互。 一、智能代理的基本原理 智能代理是能够在特定环境…...

加油站~~

求最少加油次数就是一个贪心问题&#xff0c;这里也不需要证明&#xff0c;根据我们的常识也知道就是走到油不够的时候就加油就好了&#xff0c;这里的no solution这有在两个加油站之间的距离大于了加满油后的行驶距离才会存在&#xff0c;其他情况都是可以计算的。代码有很多细…...

【商城实战(24)】商城性能大揭秘:压力测试与性能监控实战

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

Linly-Talker:开源数字人框架的技术解析与影响

一、引言&#xff1a;AI 数字人的发展趋势 近年来&#xff0c;数字人&#xff08;Digital Human&#xff09; 技术迅速发展&#xff0c;从最早的 2D 虚拟主播&#xff0c;到如今能够进行实时交互的 3D 智能助手&#xff0c;AI 在多模态交互领域的应用愈发广泛。各大互联网公司…...

【Nexus】Maven 私服搭建以及上传自己的Jar包

Nexus 安装 docker run -d -uroot --name nexus3 --restartalways -p 8081:8081 -v /data/nexus-data/blobs:/nexus-data/blobs -v /etc/localtime:/etc/localtime sonatype/nexus3这里也提供一下docker-composer的方法 .env 文件 VERSIONlatest CONTAINER_NAMECONTAINER_N…...

wlwrap 与 rlwrap 的区别对比:图形显示协议的演变

在 Linux 系统中&#xff0c;许多工具和程序依赖于命令行界面&#xff08;CLI&#xff09;来进行交互&#xff0c;尤其是对于那些没有图形用户界面的应用程序。在这种情况下&#xff0c;命令行编辑、历史记录和自动补全等功能是提升工作效率和用户体验的关键。rlwrap 和 wlwrap…...

矩阵交换行(信息学奥赛一本通-1119)

【题目描述】 给定一个55的矩阵(数学上&#xff0c;一个rc的矩阵是一个由r行c列元素排列成的矩形阵列)&#xff0c;将第n行和第m行交换&#xff0c;输出交换后的结果。 【输入】 输入共6行&#xff0c;前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。 第6行包含两个整…...

CP210x 驱动秘籍:打通 Windows 11 端口的任督二脉

前言 江湖上&#xff0c;众多电脑侠客在安装 Windows 11 时&#xff0c;遭遇“端口失踪案”。原来&#xff0c;这是缺少 CP210x 驱动的“内功心法”。今日&#xff0c;贫道便传授一套独门秘籍&#xff0c;助你打通端口“任督二脉”&#xff0c;让数据流畅如江湖中轻功高手。 …...

IDEA集成git,项目的克隆,远程仓库中文件的添加删除

目录 一、克隆项目 二、使用IDEA完成文件的上传和删除 1.配置git 2.上传 3.删除&#xff08;通过git bash&#xff09; 一、克隆项目 点击克隆&#xff0c;复制url &#xff0c;如下 打开你想要克隆到哪里&#xff0c;右击&#xff0c;选择 open Git Bash here 这一步之后…...

分治构造格雷码

题目描述 格雷码是一种二进制编码方式&#xff0c;其特性是任意两个相邻的码只有一位二进制位不同。给定一个整数 n&#xff0c;表示格雷码的位数&#xff0c;请生成所有 n 位格雷码&#xff0c;并按照格雷码的标准顺序输出。 输入格式 输出样例输入包含一个整数 n&#xff0c…...

区跨链知识和概念

1、以太坊 Geth 源码解析 Geth&#xff08;Go Ethereum&#xff09;是以太坊官方提供的 Go 语言实现的客户端&#xff0c;广泛用于以太坊全节点运行、挖矿、DApp 开发等。理解 Geth 的源码有助于掌握以太坊区块链底层逻辑&#xff0c;如区块同步、EVM 执行、P2P 交互等。 2、…...

C# net deepseek RAG AI开发 全流程 介绍

deepseek本地部署教程及net开发对接 步骤详解&#xff1a;安装教程及net开发对接全流程介绍 DeepSeekRAG 中的 RAG&#xff0c;全称是 Retrieval-Augmented Generation&#xff08;检索增强生成&#xff09;&#xff0c;是一种结合外部知识库检索与大模型生成能力的技术架构。其…...

REST 请求返回 Invalid Credentials

REST 请求返回 “Invalid Credentials”&#xff08;无效凭据&#xff09;&#xff0c;通常表示身份验证失败。可能的原因和解决方案如下&#xff1a; 可能的原因 & 解决方案 用户名或密码错误 确保使用正确的用户名和密码。如果 API 需要 Base64 编码的 Authorization 头…...

方案推介:206页WORD版ERP系统软件投标书整体解决方案

&#xff08;推介资料包含于绑定资源内&#xff09; 该文档是一份 ERP 系统软件投标书&#xff0c;围绕ERP 系统展开&#xff0c;全面阐述了其为机械加工企业提供的整体解决方案、应用价值、行业成功案例及标准功能&#xff0c;旨在助力企业实现信息化管理升级 。 ERP 软件系统…...

WebSocket生命周期和vue中使用

ing。。。晚点更新 进入页面&#xff0c;生命周期挂载后&#xff0c;window监听ws连接online 正常情况&#xff0c;心跳包检测避免断开 非正常情况&#xff0c;ws.onclose断开&#xff0c; 判断1000状态吗&#xff0c;触发重连函数。 定时器&#xff0c;重连&#xff0c;判断…...

RabbitMQ消息持久化与Lazy模式对比分析

RabbitMQ消息持久化与Lazy模式对比分析 在RabbitMQ中&#xff0c;消息持久化与Lazy模式是两种不同的机制&#xff0c;分别针对消息可靠性、存储优化等不同维度设计。以下从六个层面进行深度对比&#xff1a; 一、核心目标与作用对象差异 维度消息持久化&#xff08;delivery_…...

Springboot中的异常处理

ControllerAdvice虽然只是在处理Controller注解的类&#xff0c;在Service层抛出的异常如果没有在Service层被处理的话&#xff0c;会向上抛出到到Controller层&#xff0c;再被异常处理器捕获 1. 全局异常处理 ControllerAdvice&#xff1a;全局处理器&#xff0c;处理有Con…...

深入解析Go语言Channel:源码剖析与并发读写机制

文章目录 Channel的内部结构Channel的创建过程有缓冲Channel的并发读写机制同时读写的可能性发送操作的实现接收操作的实现 并发读写的核心机制解析互斥锁保护环形缓冲区等待队列直接传递优化Goroutine调度 实例分析&#xff1a;有缓冲Channel的并发读写性能优化与最佳实践缓冲…...

C++中虚析构函数的作用是什么?为什么基类需要虚析构函数?

C中虚析构函数的作用是什么&#xff1f;为什么基类需要虚析构函数&#xff1f; 在C中&#xff0c;虚析构函数&#xff08;virtual destructor&#xff09;的作用是确保在通过基类指针或引用删除派生类对象时&#xff0c;能够正确调用派生类的析构函数&#xff0c;从而避免资源…...

ClickHouse合并任务与查询延迟专项测试

ClickHouse合并任务与查询延迟专项测试 1. 测试目的 验证周期性高延迟&#xff08;~900ms&#xff09;是否由后台合并任务&#xff08;Merge&#xff09;引起。 2. 测试环境 组件配置ClickHouse版本24.8.3.13服务器硬件8核CPU / 32GB内存 / NVMe SSD测试表log_test 3. 测试…...

3.14学习总结

今天完成了几道关于二叉树的算法题 关于二叉树的最小最大深度和数据流中的第k大元素&#xff0c;用到优先队列&#xff0c;学习了有关java的基础知识&#xff0c;学习了双指针法。...

OpenHarmony自定义子系统、部件与模块

如图所示&#xff0c;OpenHarmony系统源码中&#xff0c;大体上按照不同种类的功能分成多个子系统&#xff0c;然后一个子系统内部进一步在同类功能上的差异性划分成一个或多个部件&#xff0c;也就是说一个部件表示一个具体功能的源码集合。最后一个部件的源码再划分成一个或多…...

PPT 相关资料介绍

文章目录 一、iSlide 工具二、免费 PPT 模板下载三、Kimi 一键生成 PPT 一、iSlide 工具 iSlide 官网 二、免费 PPT 模板下载 7个完全免费的PPT模板下载网站 优品PPT 第一PPT 三、Kimi 一键生成 PPT ☆...

C# 发送邮件 报错:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。

C# 发送邮件 报错&#xff1a;此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。 报错信息分析 当你遇到如下报错时&#xff1a; 此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。…...

大数据-spark3.5安装部署之standalone模式

真实工作中还是要将应用提交到集群中去执行&#xff0c;Standalone模式就是使用Spark自身节点运行的集群模式&#xff0c;体现了经典的master-slave模式。集群共三台机器&#xff0c;具体如下 u22server4spark&#xff1a; master worker u22server4spark2&#xff1a; worke…...

接口自动化入门 —— Jmeter实现在接口工具中关联接口处理方案

1. JMeter 接口关联处理的核心概念 接口关联是指在多个接口请求之间共享数据&#xff0c;例如将一个接口的返回值作为另一个接口的输入参数。常见的场景包括&#xff1a; 使用登录接口返回的 Token 作为后续接口的认证信息。 将一个接口返回的 ID 作为另一个接口的请求参数。…...

WebForms HTML:深入理解与高效运用

WebForms HTML&#xff1a;深入理解与高效运用 引言 随着互联网技术的飞速发展&#xff0c;WebForms HTML作为Web开发中的一种重要技术&#xff0c;已经成为了许多开发者日常工作中不可或缺的一部分。本文将深入探讨WebForms HTML的原理、应用场景以及高效运用技巧&#xff0…...

VSCode 搭建C++编程环境 2025新版图文安装教程(100%搭建成功,VSCode安装+C++环境搭建+运行测试+背景图设置)

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、VScode下载及安装二、安装 MinGW-w64 工具链三、Windows环境变量配置四、检查 M…...

【Linux 内核 | 操作系统 | 内核编译】内核编译中与锁调试相关的设置有哪一些?内核 Debug 选项中 LockDep 和其他锁调试选项详解

​问题描述&#xff1a; 我在看内核锁调试的信息时&#xff0c;看到了一些内核编译参数相关的设置&#xff0c;开启这些信息可以帮助我们在测试环境中调试锁的竞争情况&#xff0c;可以详细的打印出来一些线程持有锁&#xff0c;一些线程争抢锁的信息。 以下是我的配置&#…...

LinuX---Shell---变量

系统预定义变量 常用系统变量 PATH、HOME、PWD、SHELL、USER等 获取变量的值 语法&#xff1a;$变量名 $和变量名之间不能有空格。 案例实操 查看系统变量的值 fengubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u…...