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

Redis数据类型-ZSet

一. 概述
SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊的set类型,继承了set不可重复的特点,并在set基础上为每个值添加一个分数,用来实现值的有序排列。

二. 常用指令
明白它的特点后,接下来,操作一下此数据类型的常用的相关指令。
zadd

将一个或者多个元素及其对应的分数添加到集合中。下面用命令来演示例子:

#新增
192.168.65.15:6379> zadd db 10 oracle 5 mysql 25 redis 7 mongodb

#返回新增的个数
(integer) 4
zcard
返回元素的个数,如果key不存在,则返回0。

192.168.65.15:6379> zcard db
(integer) 4
zcount
返回 分数在 区间之间的个数。

#返回分数score 在 1-3之间的元素个数
192.168.65.15:6379> zcount db 10 20
(integer) 1
zrange
返回指定下标范围内正序排列的值,start 下标从0开始,查询所有范围是0到-1。

#查询所有元素范围用 0 -1
192.168.65.15:6379> zrange db 0 -1

  1. "mysql"
  2. "mongodb"
  3. "oracle"
  4. "redis"

#查询所有元素带分数
192.168.65.15:6379> zrange db 0 -1 withscores

  1. "mysql"
  2. "5"
  3. "mongodb"
  4. "7"
  5. "oracle"
  6. "10"
  7. "redis"
  8. "25"

#查询指定下标范围内的元素
192.168.65.15:6379> zrange db 2 3

  1. "oracle"
  2. "redis"

#查询指定下标范围内的元素,带分数
192.168.65.15:6379> zrange db 2 3 withscores

  1. "oracle"
  2. "10"
  3. "redis"
  4. "25"
    zrevrange
    返回指定下标范围倒序的值,start 下标从0开始,查询所有范围是0到-1。

#查询所有
192.168.65.15:6379> zrevrange db 0 -1

  1. "redis"
  2. "oracle"
  3. "mongodb"
  4. "mysql"

#查询所有元素,带分数
192.168.65.15:6379> zrevrange db 0 -1 withscores

  1. "redis"
  2. "25"
  3. "oracle"
  4. "10"
  5. "mongodb"
  6. "7"
  7. "mysql"
  8. "5"

#查询指定下标范围内的元素值
192.168.65.15:6379> zrevrange db 2 3

  1. "mongodb"
  2. "mysql"
    zrangebyscore
    返回指定分数区间元素的信息,可以返回分数,可以进行分页 limit offset count,offset指的是元素的下标从0开始,count指返回的元素个数,按正序返回。

#正序返回分数在0到30之间的元素信息
192.168.65.15:6379> zrangebyscore db 0 30 withscores

  1. "mysql"
  2. "5"
  3. "mongodb"
  4. "7"
  5. "oracle"
  6. "10"
  7. "redis"
  8. "25"

#正序返回分数在0到30之间的元素信息,并分页,如果是0 -1 表示所有
192.168.65.15:6379> zrangebyscore db 0 30 withscores limit 0 -1

  1. "mysql"
  2. "5"
  3. "mongodb"
  4. "7"
  5. "oracle"
  6. "10"
  7. "redis"
  8. "25"

#正序返回分数在0到30之间的元素信息,并分页,下标从0开始,元素个数是1
192.168.65.15:6379> zrangebyscore db 0 30 withscores limit 0 1

  1. "mysql"
  2. "5"

#正序返回分数在0到30之间的元素信息,并分页,下标从2开始,元素个数是2
192.168.65.15:6379> zrangebyscore db 0 30 withscores limit 2 2

  1. "oracle"
  2. "10"
  3. "redis"
  4. "25"
    zrevrangebyscore
    与zrangebyscore相比,不同是倒序 。

#返回倒序分数30-0的所有元素
192.168.65.15:6379> zrevrangebyscore db 30 0 withscores limit 0 -1

  1. "redis"
  2. "25"
  3. "oracle"
  4. "10"
  5. "mongodb"
  6. "7"
  7. "mysql"
  8. "5"

#返回倒序分数30-0,进行分页,下标从2开始,取2条
192.168.65.15:6379> zrevrangebyscore db 30 0 withscores limit 2 2

  1. "mongodb"
  2. "7"
  3. "mysql"
  4. "5"
    zrank zrevrank
    zrank可以返回元素的正序名次,名次从0开始,第1名返回0。zrevrank可以返回元素的倒序名次,名次也是从0开始,第1名返回0。

#查看正序排名
192.168.65.15:6379> zrange db 0 -1

  1. "mysql"
  2. "mongodb"
  3. "oracle"
  4. "redis"

#redis排名下标为3,那就是第4名
192.168.65.15:6379> db redis
(integer) 3

#redis排名倒序下标为0,那就是第1名
192.168.65.15:6379> zrevrank db redis
(integer) 0
zincrby zscore
zincrby增加指定元素的分数,zscore查询指定元素的分数

#查询一波数据
192.168.65.15:6379> zrange db 0 -1 withscores

  1. "mysql"
  2. "5"
  3. "mongodb"
  4. "7"
  5. "oracle"
  6. "10"
  7. "redis"
  8. "25"

#元素mysql的分数+3
192.168.65.15:6379> zincrby db 3 mysql
"8"

#重新查看排名
192.168.65.15:6379> zrange db 0 -1 withscores

  1. "mongodb"
  2. "7"
  3. "mysql"
  4. "8"
  5. "oracle"
  6. "10"
  7. "redis"
  8. "25"

#单独查询mysql的分数
192.168.65.15:6379> zscore db mysql
"8"
zrem
返回删除成功元素个数。

#删除mysql元素
192.168.65.15:6379> zrem db mysql
(integer) 1

#查询一下
192.168.65.15:6379> zrange db 0 -1

  1. "mongodb"
  2. "oracle"
  3. "redis"
    zremrangebyrank zremrangebyscore
    zremrangebyrank按排名次删除,start从0开始。
    zremrangebyscore按分数区间删除。

#删除0下标的元素
192.168.65.15:6379> zremrangebyrank db 0 0
(integer) 1

#查询,已删除
192.168.65.15:6379> zrange db 0 -1 withscores

  1. "oracle"
  2. "10"
  3. "redis"
  4. "25"

#按分数区间删除
192.168.65.15:6379> zremrangebyscore db 10 20
(integer) 1

#查询,已删除
192.168.65.15:6379> zrange db 0 -1 withscores

  1. "redis"
  2. "25"
    四. 应用场景
    只要涉及到排名、投票等场景都可以用zset。

举一个例子,我们经常在微信上给邻居小朋友投票。
#初始:明明mm 0票, 花花0票 乔乔qq 0票 小小 0票
192.168.65.15:6379> zadd ranking 0 mm 0 hh 0 qq 0 xx
(integer) 4

#查询一下初始值
192.168.65.15:6379> zrange ranking 0 -1 withscores

  1. "hh"
  2. "0"
  3. "mm"
  4. "0"
  5. "qq"
  6. "0"
  7. "xx"
  8. "0"

#明明拉来10票
192.168.65.15:6379> zincrby ranking 10 mm
"10"

#花花拉来1000票
192.168.65.15:6379> zincrby ranking 1000 hh
"1000"

#乔乔拉来50票
192.168.65.15:6379> zincrby ranking 50 qq
"50"

#小小拉来30票
192.168.65.15:6379> zincrby ranking 30 xx

#最终排名:花花1000 乔乔50 小小 30 明明 10票
192.168.65.15:6379> zrevrange ranking 0 -1 withscores

  1. "hh"
  2. "1000"
  3. "qq"
  4. "50"
  5. "xx"
  6. "30"
  7. "mm"
  8. "10"

#经调查违规拉票,取消资格
192.168.65.15:6379> zrem ranking hh
(integer) 1

#最后只取第一名
192.168.65.15:6379> zrevrange ranking 0 0 withscores

  1. "qq"
  2. "50"

 

相关文章:

Redis数据类型-ZSet

一. 概述 SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊的set类型,继承了set不可重复的特点,并在set基础上为每个值添加一个分数,用来实现值的有序排列。 二. 常用指令 明白它的特点后,接下来…...

国外各大学和学院对于ChatGPT使用立场总结

ChatGPT和生成式AI的快速普及对教育这个专业领域带来了威胁——全国各地的大学和学院都召开了紧急会议,讨论如何应对学生利用AI作弊的风险。 一部分学校和教授担心这项技术会成为学生在论文或其他写作作业和考试中寻求捷径的工具。而这种生成内容的方式往往能够绕开…...

我在VScode学Java(Java二维数组)

我的个人博客主页:如果\真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:(我在Vscode学Java) 接上回Java一维数组的介绍(我在VScode学Java(Java一维数组) ) 二维数组是Java中的一…...

HTML-iconfont动态图标SVG效果--阿里巴巴图标矢量库

给北大打工,实现官网首页动态图标效果_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ys4y1c7oh/?spm_id_from333.1007.top_right_bar_window_default_collection.content.click&vd_source924f5dad6f2dcb0a3e5dca4604287ecd(本篇笔记操作方法…...

C++17完整导引-模板特性之编译器的if语句

编译期if语句 if constexpr 编译期if语句使用编译期if语句编译期if的注意事项编译期if影响返回值类型即使在 *then* 部分返回也要考虑 *else* 部分编译期短路求值 其他编译期if的示例完美返回泛型值使用编译期if进行类型分发 带初始化的编译期if语句在模板之外使用编译期if参考…...

告别Excel,免费大数据分析与可视化工具,让你的论文图表“高大上”

数据分析工具很多,可以分为表格、数据库、BI工具、编程等四大工具。每个大类又有很多的工具,例如表格包括Excel、WPS、Google Sheets、Airtable等。编程工具包括Python和R。 搞科研几年了,笔者一直都是在使用Excel做数据分析和可视化&#xf…...

C++ 中的继承和多态

C 中的继承和多态 一、继承二、函数重载、隐藏、覆盖、重写1.函数重载(Function Overload)2.函数隐藏(Function Hiding)3.函数重写与函数覆盖(Function Override) 三、多态四、纯虚函数和抽象类五、多重继承…...

NestedFormer:用于脑肿瘤分割的嵌套模态感知Transformer

文章目录 NestedFormer: Nested Modality-AwareTransformer for Brain Tumor Segmentation摘要方法Global Poolformer EncoderNested Modality-Aware Feature AggregationModality-Sensitive Gating 实验结果 NestedFormer: Nested Modality-AwareTransformer for Brain Tumor …...

【SQLServer】sqlserver数据库导入oracle

将sqlserver数据库导入到oracle 实用工具: SQL Server Management Studio 15.0.18424.0 SQL Server 管理对象 (SMO) 16.100.47021.07eef34a564af48c5b0cf0d617a65fd77f06c3eb1 Microsoft Analysis Services 客户端工具 15.0.19750.0 Microsoft 数据访问组件 (MDAC) …...

【5.20】四、性能测试—性能测试工具

目录 4.5 性能测试工具 4.5.1 LoadRunner 4.5.2 JMeter 4.5 性能测试工具 性能测试是软件测试中一个很重要的分支,人们为了提高性能测试的效率,开发出了很多性能测试工具。一款好的测试工具可以极大地提高测试效率,为发现软件缺陷提供重要…...

朗诵素材-《少年正是读书时》(两角色主持朗诵)

少年正是读书时 1、少年正是读书时 男:我们生活在/古老的土地上 男:我们拥有/共同的梦想 女:那朗朗的书声/那浓浓的墨香 女:都在告诉我们 合:少年正是/读书时 2、为何要读书 男:养心&am…...

凭借这个笔记,拿下8家大厂offer....

如何拿到多家大厂的offer,没有过硬的实力,就需要不断的学习。 我是如何拿到,阿里,腾讯,百度等八家大厂的offer的,今天我就给大家来分享我的秘密武器,阿里大神整理的包括,测试基础&am…...

介绍一下全链路压测平台的相关内容

随着互联网技术的不断发展,越来越多的企业开始依赖互联网来实现业务的发展和增长。而对于这些企业而言,如何保证他们的业务在高并发、高负载的情况下依然能够正常运行,是非常重要的一个问题。为了解决这个问题,企业可以使用全链路…...

对于无效的数据,该如何处理

一、无效数据的来源: 在进行数据管理时,无效数据是非常常见的问题。 无效数据可能来自于数据采集、输入错误、数据处理或存储错误等方面。 这些无效数据会对结果造成严重的影响,因此需要及时发现和处理。 二、处理无效数据: …...

港联证券:机器人行业有望迎来整体性机会 六氟磷酸锂翻倍上涨

表示,当前AI调整的时间空间已接近13年水位,且调整的促发因素有望缓和,后续可积极一些。一方面,13年三次调整时间在40日以内、幅度在15%以内。当前AI调整已持续1个月、幅度在10%以上,时空已接近历史。另一方面&#xff…...

css 伪类选择器 结构伪类

css 伪类选择器 结构伪类 常用的: :first-child 所有兄弟元素中的第一个 :last-child 所有兄弟元素中的最后一个 :nth-child(n) 所有兄弟元素中的第n个 :first-of-type 所有同类型兄弟元素中的第一个 :last-of-type 所有同类型兄弟元素中的最后一个 :nth-of-type(…...

常用的表格检测识别方法-表格区域检测方法(上)

常用的表格检测识别方法 表格检测识别一般分为三个子任务:表格区域检测、表格结构识别和表格内容识别。本章将围绕这三个表格识别子任务,从传统方法、深度学习方法等方面,综述该领域国内国外的发展历史和最新进展,并提供几个先进…...

【运维知识进阶篇】集群架构-Rewrite重定向

Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。 分以下几种场景使用 1、地址跳转,用户访问一个URL,将其定向到另一个URL 2、协议跳转,用户通过http协议请求网站时,…...

JavaScript如何使用while循环

JavaScript 中的 while 循环是一种常用的循环结构,用于在满足一定条件时重复执行一段代码块。while 循环会先检查条件是否为真,如果为真,则执行循环体中的代码,然后再次检查条件。当条件变为假时,循环会结束。 while(…...

『MySQL 实战 45 讲』16 - “order by” 是怎么工作的

“order by” 是怎么工作的 首先创建一个表 CREATE TABLE t ( id int(11) NOT NULL, city varchar(16) NOT NULL, name varchar(16) NOT NULL, age int(11) NOT NULL, addr varchar(128) DEFAULT NULL, PRIMARY KEY (id), KEY city (city) ) ENGINEInnoDB;全字段排序 在 cit…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...