集合(Set)和有序集合(ZSet)的基本使用方法详解【Redis】

news2024/11/29 2:32:42

文章目录

  • 一. Redis中的集合(Set)
    • 1.1基本的一些操作
      • 1.1.1 smembers查看集合中的所有成员
      • 1.1.2 scard删除成员数量
      • 1.1.3 smove移动成员
      • 1.1.4 sinterstore 存储俩个集合的交集
  • 二.Redis中的有序集合(ZSet)
    • 2.1 基本的一些操作
      • 2.1.1 zadd添加1到多个成员
      • 2.1.2 zcount 返回指定分数区间的成员数量
      • 2.1.3 zcard 返回指定成员数量

一. Redis中的集合(Set)

Set是String类型的无序集合。集合成员是唯一的,重复的数据不能出现在集合中。

1.1基本的一些操作

image-20221104230313551

image-20221104231411838

1.1.1 smembers查看集合中的所有成员

Redis Smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。

先添加多个成员:

127.0.0.1:6379> sadd s1 a 1 a b 2 3 5
(integer) 6

使用smembers命令查看,可以看出来是乱序的。

127.0.0.1:6379> smembers s1
1) "2"
2) "a"
3) "1"
4) "5"
5) "b"
6) "3"

1.1.2 scard删除成员数量

Redis Scard 命令返回集合中元素的数量。

使用srem可以删除指定的值。

127.0.0.1:6379> srem s1 a 1
(integer) 2

使用scard查看一下现在剩余的成员数量:
image-20221104231155075

之前存储了6个,删除了俩个,现在只剩下了4个。

1.1.3 smove移动成员

Redis Smove命令将指定的成员元素从源集合移动到目标集合。SMOVE是原子操作。如果源集合不存在或不包含指定的成员元素,则SMOVE命令不执行任何操作,只返回0。否则,将从源集合中删除成员元素并将其添加到目标集合中。当目标集已经包含成员元素时,SMOVE命令只需从源集中删除成员元素。当源或目标不是集合类型时,将返回错误。

使用smove语句将s1里的2移动到s2里面。

127.0.0.1:6379> smove s1 s2 2
(integer) 1

1.1.4 sinterstore 存储俩个集合的交集

Redis Sinterstore 命令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。

先使用sadd将s1里面添加5个成员: 0 9 8 7 6

给s2添加5个成员:0 9 4 6 3

我们可以看出,s1和s2的交集是0 9 6 3 :3是因为s1原来里面含有3。

127.0.0.1:6379> sadd s1 0 9 8 7 6
(integer) 5
127.0.0.1:6379> sadd s2 0 9 4 6 3
(integer) 5

我们使用 sinterstore 存储俩个集合的交集:

127.0.0.1:6379> sinterstore s3 s1 s2
(integer) 4

我们使用smembers,显示s3里面的成员值:

127.0.0.1:6379> smembers s3
1) "0"
2) "3"
3) "6"
4) "9"

二.Redis中的有序集合(ZSet)

Zset是Redis提供的最独特的数据类型之一。首先,它是一个集合,这确保了内部值的唯一性。其次,它为每个值添加一个分数属性,通过对分数进行排序来实现排序。例如,zset结构用于存储学生的分数。值表示学生的ID,分数是测试分数。我们可以根据分数对成绩进行排序,以获得学生的排名。

image-20221105115812768

image-20221104232928128

image-20221105114314235

image-20221105115027370

2.1 基本的一些操作

2.1.1 zadd添加1到多个成员

Redis Zadd命令用于将一个或多个成员元素及其分数添加到有序集。
如果成员已经是有序集的成员,请更新该成员的分数值,然后重新插入成员元素以确保该成员处于正确的位置。
小数可以是整数值或双精度浮点数。
如果有序集密钥不存在,请创建一个空的有序集并执行ZADD操作。
如果键存在但不是有序集类型,则返回错误。

注意:在Redis 2.4之前,ZADD一次只能添加一个元素。

我们增加一个z1给其赋值:ff为100分,aa为90分,nn为110分以此为例。

image-20221105114451955

2.1.2 zcount 返回指定分数区间的成员数量

Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。

127.0.0.1:6379> zcount z1 -inf (110
(integer) 3

2.1.3 zcard 返回指定成员数量

Redis Zcard 命令用于计算集合中元素的数量。

127.0.0.1:6379> zcard z1
(integer) 4

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

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

相关文章

【HarmonyOS】鸿蒙轻量级智能穿戴应用可以集成华为分析SDK吗?

1、问题描述 我们的项目是基于鸿蒙系统开发的轻量级智能穿戴应用,目前在做的主要是运动手表GT3。 我们在项目中使用了华为分析服务,但是在Build Hap时出现问题: 因此,我们想了解轻量级智能穿戴应用项目中是否能够集成华为分析服…

计算机毕业设计(附源码)python在线影评系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Leetcode-每日一题1106. 解析布尔表达式(DFS模拟栈)

题目链接:点击跳转 思路 方法一、DFS模拟栈 题目意思很简单让你去判断与或非布尔表达式的结果,我们可以看布尔表达式看成一棵树,需要我们解决的是从最底层的嵌套布尔表达式产生的结果不断向上的结果,如图: 既然他是…

云栖大会开源重磅升级!PolarDB-X v2.2: 企业级和国产化适配

2022 年云栖大会上,PolarDB-X 发布 2.2.0 版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产化适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普…

自定义分页器

文章目录自定义分页器1、分页推导2、分页器代码封装自定义分页器 1、分页推导 queryset对象支持切片操作 确定用户访问的页码 url?page1 current_pagerequest.GET.get(page,1)前端获取到 的都是字符串数据,需要类型转换 current_page request.GET.get(page,…

为什么C语言执行效率高,运行快?

目录 简述C语言由来 BCPL语言及代码B语言以及代码C语言 编程语言 机器语言汇编语言高级语言 C为何快速 简述 都说C语言编写的程序执行效率比较高,那么到底高在哪里,我们一块来学习学习。 C语言由来 C语言源自于BCPL、B两种语言。 BCPL语言以及代码…

django csrfMiddleware的一些理解跨站和跨域

术语 术语解释备注跨域两个 URL 的“协议主机名端口”3者只要有一个不一致http://www.taobao.com/和https://www.taobao.com/跨站两个 URL 的 eTLD1 不相同a.github.io 和 b.github.ioeTLDeffective top level domain (有效顶级域名).com、.co.uk、.git…

第六节:数组的定义与使用【java】

目录 📃1. 数组的基本概念 1.1 为什么要使用数组 1.2 什么是数组 1.3 数组的创建及初始化 1.4 数组的使用 🎒2. 数组是引用类型 2.1 初始JVM的内存分布 2.2 基本类型变量与引用类型变量的区别 2.3 认识 null 2.4 再谈引用变量 📖3. …

Redis的RDB持久化配置以及数据恢复

文章目录Redis的RDB持久化配置以及数据恢复配置RDB持久化机制RDB持久化机制的工作流程基于RDB持久化机制的数据恢复Redis的RDB持久化配置以及数据恢复 配置RDB持久化机制 在 redis 的配置文件中找到如下内容: 以 save 60 10000 为例,表示每隔 60s&…

Springboot 整合与文件配置

哈喽~大家好,这篇看看Springboot 整合与文件配置。 🥇个人主页:个人主页 🥈 系列专栏:【Java框架】 🥉与这篇相关的文章: 【JAVAEE框架】MyBatis与Spring的整合&#xff0…

Unity-huatuo热更新调研

文章目录1. 相关资料2. 环境准备2.1 项目和编辑器版本2.2 安装huatuo插件2.3 在build settings里面勾选Export Project2.4 导出Android studio工程3. 验证热更新3.1 更改读取目录3.2 运行android apk3.3 热更新1. 相关资料 bilibili视频:https://www.bilibili.com/…

学院打卡第十四天

今天是一道困难题,难得有困难题!! 如题: 但是这个困难题感觉也不是很”困难“!!! 算法思想: 第一感觉就是利用栈的思想,这种题做多了,一看见就是想到栈&…

2021年上半年软件设计师下午真题及答案解析(三)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务。该系统的主要功能描述如下: &#…

Kotlin编程实战——概述(01)

一 概述 Kotlin用于服务器开发Kotlin 进行 Android 开发Kotlin 用于 JavaScript 开发Kotlin 用于原生开发Kotlin 用于数据科学协程多平台 二 Kotlin用于服务器开发 2.1 原因 表现力可伸缩性互操作性迁移迁移工具学习曲线 2.2 Kotlin 进行服务器端开发的框架 Spring、Vert.…

Premiere 出现“该级别的帧大小/帧速率无效。请减小视频范围或帧速率,或者增加配置文件和级别,然后重试”的解决办法

有时候我们需要制作一定纵横比的视频,比如设置画面大小为1080(水平)1920(垂直)的竖屏尺寸,但是最近我导出视频时发现了 “该级别的帧大小/帧速率无效。请减小视频范围或帧速率,或者增加配置文件和级别,然后重试” 这个问题&#x…

使用插值法公式组成数字电路进行计算的计算机

使用插值法公式组成数字电路进行计算的计算机 使用插值法公式组成数字电路进行计算的计算机是一种可以使用插值法计算积分值,导数值,函数值的数字计算机,它由按键,液晶显示器,中央处理器组成。按键输入的程序保存在磁带…

【CUDA编程】CUDA内存模型

文章目录1. 内存结构2. GPU device内存2.1 寄存器(Registers)2.2 本地内存(Local Memory)2.3 共享内存(Shared Memory)2.4 常量内存(Constant Memory)2.5 纹理内存(Texture Memory)2.6 全局内存(Global Memory)3. CPU Host内存1. 内存结构 在CUDA中可编程内存的类型有&#xf…

文件管理的功能

文章目录什么是文件文件的属性文件内部的数据如何组织起来文件之间应该如何组织起来操作系统应该向上提供哪些功能从上往下看,文件应该如何存放在外存其他需要由操作系统实现的文件管理功能什么是文件 文件就是一组有意义的信息/数据集合 文件的属性 文件名&#x…

万字手撕AVL树 | 上百行的旋转你真的会了吗?【超用心超详细图文解释 | 一篇学会AVL】

说在前面 今天这篇博客,是博主今年以来最最用心的一篇博客。我们也很久没有更新数据结构系列了,几个月前博主用心深入的学习了这颗二叉平衡搜索树,博主被它的查找效率深深吸引。 AVL树出自1962年中的一篇论文《An_algorithm_for_the_organi…

计算机毕业设计(附源码)python职业高中智慧教学系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…