【Redis】Redis 有序集合 Zset 操作 ( 简介 | 查询操作 | 增加操作 | 删除操作 | 修改操作 )
文章目录
- 一、有序集合 Zset
- 二、查询操作
- 1、查询 Zset 所有数据
- 2、查询 Zset 所有数据和评分
- 3、查询指定评分范围的 Zset 数据
- 4、查询指定评分范围的 Zset 数据并从大到小排序
- 5、统计指定评分范围的 Zset 数据个数
- 6、查询指定元素在 Zset 有序集合中的排名
- 三、增加操作
- 1、向 Redis 中插入 Zset 有序集合
- 四、删除操作
- 1、删除指定元素
- 五、修改操作
- 1、修改元素评分
一、有序集合 Zset
有序集合 Zset 与 普通集合 Set 类似 , 都是 没有重复元素的集合 ;
有序集合 Zset 中的 元素排序 , 是 根据 评分 进行排序 , 每个成员 都关联了一个 评分 , 在该 有序集合 中 , 根据 评分 由低到高 进行排序 ;
Zset 中的元素 是 不可重复的 , 但是 元素 关联 的 评分 是可以重复的 , 也就是说 存在 两个不同的元素 关联着 相同的 评分 ;
Zset 中的元素 是 有序 的 , 根据 排序的索引 或者 元素的评分 可以获取 指定范围 的 成员 ; 如 : 获取 中间元素 ;
二、查询操作
1、查询 Zset 所有数据
执行
zrange student 0 -1
命令 , 可以 从 Redis 中查询 student 键对应的 Zset 有序集合中的所有元素 ;
代码示例 :
127.0.0.1:6379> zadd student 60 Tom 72 Jerry 49 Jack 81 Bill
(integer) 4
127.0.0.1:6379> zrange student 0 -1
1) "Jack"
2) "Tom"
3) "Jerry"
4) "Bill"
127.0.0.1:6379>

2、查询 Zset 所有数据和评分
执行
zrange student 0 -1 withscores
命令 , 可以 从 Redis 中查询 student 键对应的 Zset 有序集合中的所有元素 和 评分 ;
代码示例 :
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Tom"
4) "60"
5) "Jerry"
6) "72"
7) "Bill"
8) "81"
127.0.0.1:6379>

3、查询指定评分范围的 Zset 数据
执行
zrangebyscore student 20 70
zrangebyscore student 20 70 withscores
命令 , 可以 从 Redis 中查询 student 键对应的 Zset 有序集合中 20 ~ 70 分 之间的数据 ;
代码示例 :
127.0.0.1:6379> zrangebyscore student 20 70
1) "Jack"
2) "Tom"
127.0.0.1:6379> zrangebyscore student 20 70 withscores
1) "Jack"
2) "49"
3) "Tom"
4) "60"
127.0.0.1:6379>

4、查询指定评分范围的 Zset 数据并从大到小排序
执行
zrevrangebyscore student 70 20
zrevrangebyscore student 70 20 withscores
命令 , 可以 从 Redis 中查询 student 键对应的 Zset 有序集合中 20 ~ 70 分 之间的数据 , 并且从大到小排序 ;
代码示例 :
127.0.0.1:6379> zrevrangebyscore student 70 20
1) "Tom"
2) "Jack"
127.0.0.1:6379> zrevrangebyscore student 70 20 withscores
1) "Tom"
2) "60"
3) "Jack"
4) "49"
127.0.0.1:6379>

5、统计指定评分范围的 Zset 数据个数
执行
zcount student 20 70
命令 , 可以 统计 Zset 有序集合中 20 ~ 70 分 之间的数据个数
代码示例 :
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Bill"
6) "81"
127.0.0.1:6379> zcount student 20 70
(integer) 1
127.0.0.1:6379>

6、查询指定元素在 Zset 有序集合中的排名
执行
zrank student Jerry
命令 , 可以 查询 Zset 有序集合中 Jack 元素排名 , 从 0 开始排序 ;
代码示例 :
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Bill"
6) "81"
127.0.0.1:6379> zrank student Jerry
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> zrank student Bill
(integer) 2
127.0.0.1:6379>

三、增加操作
1、向 Redis 中插入 Zset 有序集合
执行
zadd student 60 Tom 72 Jerry 49 Jack 81 Bill
命令 , 可以 向 Redis 的 student 键 中 存储 Zset 数据 ,
- Tom 评分 60 ,
- Jerry 评分 72 ,
- Jack 评分 49 ,
- Bill 评分 81 ;
排序原则是 根据 评分 从小到大 进行排序 ;
如果按照 评分 从低到高 排列为 : Jack < Tom < Jerry < Bill ;
代码示例 :
127.0.0.1:6379> zadd student 60 Tom 72 Jerry 49 Jack 81 Bill
(integer) 4
127.0.0.1:6379> zrange student 0 -1
1) "Jack"
2) "Tom"
3) "Jerry"
4) "Bill"
127.0.0.1:6379>

四、删除操作
1、删除指定元素
执行
zrem student Tom
命令 , 可以 从 Zset 有序集合 中 删除 Tom 元素 ;
代码示例 :
127.0.0.1:6379> zrem student Tom
(integer) 1
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Bill"
6) "81"
127.0.0.1:6379>

五、修改操作
1、修改元素评分
执行
zincrby student 20 Tom
命令 , 可以 为 Zset 有序集合 中 的 Tom 元素 的评分 增加 20 ;
代码示例 :
127.0.0.1:6379> zincrby student 20 Tom
"80"
127.0.0.1:6379> zrange student 0 -1 withscores
1) "Jack"
2) "49"
3) "Jerry"
4) "72"
5) "Tom"
6) "80"
7) "Bill"
8) "81"
127.0.0.1:6379>

相关文章:
【Redis】Redis 有序集合 Zset 操作 ( 简介 | 查询操作 | 增加操作 | 删除操作 | 修改操作 )
文章目录一、有序集合 Zset二、查询操作1、查询 Zset 所有数据2、查询 Zset 所有数据和评分3、查询指定评分范围的 Zset 数据4、查询指定评分范围的 Zset 数据并从大到小排序5、统计指定评分范围的 Zset 数据个数6、查询指定元素在 Zset 有序集合中的排名三、增加操作1、向 Red…...
Java特性之设计模式【策略模式】
一、策略模式 概述 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略…...
IR-CUT 保证摄像机成像效果的滤镜
IR-CUT双滤镜是指在摄像头镜头组里内置了一组滤镜,当镜头外的红外感应点侦测到光线的强弱变化后,内置的IR-CUT自动切换滤镜能够根据外部光线的强弱随之自动切换,使图像达到最 佳效果。也就是说,在白天或黑夜下,双滤光片…...
openpnp - 普通航空插头和PCB的连接要使用线对板连接器
文章目录openpnp - 普通航空插头和PCB的连接要使用线对板连接器概述改进实际效果总结ENDopenpnp - 普通航空插头和PCB的连接要使用线对板连接器 概述 和同学讨论问题, 准备将航空插头连接到PCB上. 航空插头选用GX12-4公头, 拧到开孔的铁板上. 然后航空插头公头再与PCB连接. 铁…...
Python3 错误和异常实例及演示
作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。 Python 有2种错误很容易辨认:语法错误和异常。 Python assert(断言)用于判断…...
Android 9.0第三方app根据包名设置为横屏显示
1.概述 在android9.0的系统rom定制化开发中,在某些横屏的设备比如平板电脑,tv智能电视,广告机等等设备中,通常系统是默认横批显示的,但是在安装一些竖屏app的时候, 就会旋转为竖屏,这个时候操作app也不方便,所以产品需求要求竖屏也需要根据包名横屏显示出来,这就需要在…...
MySQL会导致索引失效的情况与解决索引失效的方法
什么情况会导致索引失效 索引失效也是慢查询的主要原因之一,常见的导致索引失效的情况有下面这些: 1.使用 SELECT * 进行查询;2.创建了组合索引,但查询条件未准守最左匹配原则;3.在索引列上进行计算、函数、类型转换等操作;4.以 % 开头的 L…...
使用nginx单独部署Vben应用
前言 本文主要介绍Vben使用nginx单独部署的方式,其实前端发展到现在已经不是当年的jsp,asp必须要和后端一起部署了。单独部署调试的工具也很多,比如vue-cli-service 和 Vben中用到的vite ,当然这些我们一般用在开发的工程中。正式…...
ES6新特性详解
文章目录1. let和const1.1 let声明变量1.2 const声明常量2. 模板字符串3. 解构赋值3.1 数组的解构赋值3.2 对象的解构赋值4. 函数扩展4.1 参数默认值4.2 剩余参数4.3 箭头函数5. 对象扩展5.1 对象简写5.2 属性名表达式5.3 扩展运算符6. Symbol7. Iterator和Generator7.1 Iterat…...
Ubuntu下安装 ntfs-3g
目录1.FAT32、NTFS和exFAT2.ubuntu 安装 ntfs-3g2.1 直接安装2.2 源码安装1.FAT32、NTFS和exFAT U盘在格式化的时候都会有三种格式分别是FAT32、NTFS和exFAT。 FAT32格式 FAT32格式硬盘分区的最大容量为2TB,虽然U盘做不到,但是现在1xTB硬盘都有了&…...
【专业认知】抖音就业 / 保研北大教育学 / 留学南加州EE / 微软就业
2023.2.18 一. 周金辉学长分享——本科经验分享 0 简介 计算机农大本硕 硕士毕业后在抖音公司工作 1 行业前景:计算机专业能做什么? 1.1 计算机行业发展路线 远古时代: 二战开始,计算机技术发展,出现互联网 包…...
【算法题】2 的 n 次幂的背后
前言: 说实话,真的不爱写算法题相关的文章了,觉得没啥意义,但是对这种比较好玩并且简单,学会了就能很好提高算法效率的文章,还是要写一写,不哭不哭,你不会不是你的错,只是…...
【人工智能AI】一、NoSQL 企业级基础入门《NoSQL 企业级基础入门与进阶实战》
写一篇介绍什么是NoSQL的技术文章,分5个章节,每个章节细分到3级目录,重点介绍一下优缺点,适用场景,未来发展趋势等。 一、NoSQL简介 1.1 什么是NoSQL NoSQL(Not only SQL),意思是“…...
Ubuntu安装opencv库3.4.10,并在cmake工程中引入opencv库
Windows下安装不同,Ubuntu安装OpenCV库时,需要事先安装依赖,而且不同OpenCV库所需的依赖可能会有所不同,下面的依赖亲测 3.4.10 和 4.5.5版本的有效,但是4.6以上版本安装可能会报错。 参考链接:https://bl…...
实现8086虚拟机(四)——mov 和 jmp 指令解码
文章目录mov 指令解码jmp 指令解码这篇文章举例来讲讲 mov 指令和 jmp 指令解码函数的实现,其他的指令解码函数都与这些类似。mov 指令解码 以 mov 指令中的一类:寄存器/内存 到/从 寄存器,来详细说明解码函数的实现。 机器指令格式如下&am…...
数据库技术-函数依赖、键与约束、范式
一、函数依赖 给定一个x,能唯一确定一个Y,就称x确定Y,或者说Y依赖于x,例如YX*X函数。 函数依赖又可扩展以下两种规则: 部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分(即A)可以确定C&a…...
shiro CVE-2020-1957
0x00 前言 在之前只是单纯的复现了漏洞,没有记笔记,所以补充了这篇分析笔记。 影响版本:shiro < 1.5.2 0x01 环境搭建 环境用的是:https://github.com/lenve/javaboy-code-samples/tree/master/shiro/shiro-basic 0x02 漏…...
RabbitMQ 入门到应用 ( 五 ) 基本应用
6.更多应用 6.1.AmqpAdmin 工具类 可以通过Spring的Autowired 注入 AmqpAdmin 工具类 , 通过这个工具类创建 队列, 交换机及绑定 import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.Di…...
部署dapr的辛酸历程
前言dapr大概的了解,个人理解他就是一个分布式服务的管理,把微服务常用的组件(缓存,消息中间件、分布式锁、安全id4等)和监控以及服务注册、发现等等一系列功能以一个很抽象的方式管理起来。可能我们部署微服务用consul、ocelot、polly套件、…...
golang入门笔记——内存管理
文章目录自动内存管理概念自动内存管理-相关概念:追踪垃圾回收:分代GC(Generational GC)引用计数内存分配Go内存分配-分块Go内存分配——多级缓存Go内存管理优化Balanced GC自动内存管理 概念 1.动态内存 程序在运行时根据需求…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
