Redis -- set集合
挑战自己,每天进步一点点,成就将属于不停止脚步的你。
目录
Redis集合?
集合基本命令
sadd
smembers
sismember
scard
spop
srandmember
smove
srem
集合间操作
sinter
sinterstore
sunion
sdiff
sdiifstore
Redis集合?
集合就是把一些有关的数据放在一起,你可以思考一下数学中的集合,离散数学中的集合里面的元素是不区分顺序的。不同于list,list中的元素如果元素都相同,但是有两个元素的顺序不一样,那么这两个列表就不相同。
集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中:
- 元素之间是无序的
- 元素不允许重复
一个集合中最多可以存储2^32 − 1 个元素。Redis 除了支持集合内的增删查改操作,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多问题。
下面是一个集合的图解:
集合基本命令
集合的操作命令,都是带有S前缀的。
sadd
将一个或者多个元素添加到 set 中。注意,重复的元素无法添加到 set 中。
语法:sadd key member [ member1 member2 ... ]
- 时间复杂度:O(1)
- 返回值:本次添加成功的元素的个数。
- 一次性可以添加多个member,多个member之间使用空格间隔。
示例:
集合石要求不能重复的:
smembers
获取一个 set 中的所有元素,注意,元素间的顺序是无序的.
语法:smembers key
- 时间复杂度:O(N)
- 返回值:所有元素的列表。
示例:
sismember
判断一个元素在不在 set 中。
语法:sismember key member
- 时间复杂度:O(1)
- 返回值:1 表示元素在 set 中。0 表示元素不在 set 中或者 key 不存在。
示例:
scard
全称:set cardinality。获取一个 set 的基数(cardinality),即 set 中的元素个数。这个基数可以理解为数量的意思。
语法:scard key
- 时间复杂度:O(1)
- 返回值:set 内的元素个数。
示例:
pop一般表示列表中的删除一个元素。但是集合的元素是无序的,因此删除是随机的。
spop
从集合中随机删除一个member
语法:spop key [ count ]
- count表示删除的个数,不写的时候默认为1,删除一个,写了之后就会删除指定的count个。
- 返回值为被删除的member的值。
- 时间复杂度:O(N), n 是 count
示例:
srandmember
随机从set中获取一个member,该方法并不会删除该被获取的member。
语法: srandmember key [count]
- 时间复杂度O(1)
- 返回值:随机获取的一个member的值。
- 可以指定生成的随机member的次数。
示例:
指定count:
smove
将一个元素从源 set 取出并放入目标 set 中
语法:smove sourceKey destinationKey member
- 时间复杂度:O(1)
- 返回值:1 表示移动成功,0 表示失败
示例:
创建源key:
创建destination key:
他们都共有一个m1,然后将sourceKey中的元素移动到destinationKey当中:
移动成功之后返回1:
但是由于这里的destinationKey已经有一个m1,所以不会有明显的改变。
下面移动一个其他的member:
srem
将指定的元素从 set 中删除。
语法:srem key member [member ... ]
- 时间复杂度:O(N), N 是要删除的元素个数
- 返回值:本次操作删除的元素个数。
示例:
集合间操作
集合在算法设计和复杂性理论中也发挥着重要作用。集合的操作和性质为解决许多计算问题提供了基础,例如图论、优化问题和网络流问题等。集合是计算机科学中许多算法和数据结构的核心概念
集合的操作并不只针对里面的元素,集合的操作还可以对两个集合本身进行操作。两个集合之间可以进行交集(inter),并集(union),差集(diff)的计算。
sinter
获取给定 set 的交集中的元素。
语法:sinter key [key... ]
- 时间复杂度:O(N * M), N 是最小的集合元素个数. M 是最大的集合元素个数
- 返回值:交集的元素
示例:
求交集:
另外一个版本的求交集
sinterstore
获取给定 set 的交集中的元素并保存到目标 set 中
语法:sinterstore destKey key [ key ... ]
- 时间复杂度:O(N * M), N 是最小的集合元素个数. M 是最大的集合元素个数
- 返回值:交集的元素个数
- destKey为结果集的存放目标。
示例:
设置两个setkey
执行交集操作:
查看结果:
sunion
求多个集合中的并集。
语法:sunion key [ key ... ]
- 时间复杂度:O(N), N 给定的所有集合的总的元素个数
- 返回值:并集的元素。
示例:
sunionstore
获取给定 set 的并集中的元素并保存到目标 set 中。
语法:sunionstore destination key [key ...]
- 时间复杂度:O(N), N 给定的所有集合的总的元素个数.
- 返回值:并集的元素个数。
示例:
sdiff
获取给定 set 的差集中的元素。
语法:SDIFF key [key ...]
- 时间复杂度:O(N), N 给定的所有集合的总的元素个数.
- 返回值:差集的元素。
示例:
反过来:
sdiifstore
获取给定 set 的差集中的元素并保存到目标 set 中。
语法:SDIFFSTORE destination key [key ...]
- 时间复杂度:O(N), N 给定的所有集合的总的元素个数.
- 返回值:差集的元素个数。
示例:
使用sdiifstore:
相关文章:

Redis -- set集合
挑战自己,每天进步一点点,成就将属于不停止脚步的你。 目录 Redis集合? 集合基本命令 sadd smembers sismember scard spop srandmember smove srem 集合间操作 sinter sinterstore sunion sdiff sdiifstore Redis集合&#…...
明天是几号(c++题解)
题目描述 题目描述 在某国,每年有 个月,每个月有 天。 求 年 月 日的下一天的日期。 输入格式 第一行:两个整数 。 第二行:三个整数 输出格式 输出三个整数,表示 年 月 日的下一天的日期。 样例 样例…...

PHP安装后错误处理
一:问题 安装PHP后提示错误如下 二:解决 1:Warning: Module mysqli already loaded in Unknown on line 0解决 原因:通过php.ini配置文件开启mysqli扩展的时候,开启了多次 解决:将php.ini配置文件中多个…...
Unity3D开发之鼠标单双击判断
在开发游戏和交互式应用程序时,经常需要对用户的鼠标点击进行准确的响应。其中,单击和双击事件的判断是常见需求之一。本文将介绍如何在Unity中优雅地实现鼠标单双击判断,使代码结构清晰、易读、易维护。 背景 在许多项目中,我们…...

openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围
文章目录 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围214.1 性能因素214.2 调优范围确定 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围 数据库性能调优通常发生在用户对业务的执行效率不满意,期望通过调优加快业务执行的情况下。正…...
JAVA——Stream流
1.Stream流的作用(流水线) 结合了Lambda表达式,简化集合、数组的操作; 2.Stream流的使用步骤 ①先得到一条Stream流(流水线),并将数据放上去; ②利用Stream流中的API进行各种操作…...

QXlsx Qt操作excel(1)
QXlsx 是一个用于处理Excel文件的开源C库。它允许你在你的C应用程序中读取和写入Microsoft Excel文件(.xlsx格式)。该库支持多种操作,包括创建新的工作簿、读取和写入单元格数据、格式化单元格、以及其他与Excel文件相关的功能。 关于QXlsx的…...

20240131在ubuntu20.04.6下使用whisper不同模式的比对
20240131在ubuntu20.04.6下使用whisper不同模式的比对 2024/1/31 16:07 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装! 3、配置whisper…...

HTTP相关问题
目录 1.从输入URL到页面展示到底发生了什么? 2.HTTP状态码有哪些? 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些? 4.HTTP和HTTPS有什么区别&…...

闲人闲谈PS之五十三——离散制造中的魔鬼--物料套裁
惯例闲话:最近和老婆大人商议买车事宜,闲人以为会陷入买油车还是电车的纠结,没想到老婆大人无比坚定,买电车。在买车这方面,老婆的想法居然比闲人超前。闲人对车定位在代步工具,2年前,对车还是印…...

Dell服务器iDRAC9忘记密码, 通过RACADM工具不重启 重置密码
系列文章目录 文章目录 系列文章目录前言一、RACADM工具二、linux环境1.解压安装RACADM工具测试RACADM工具重置iDRAC密码 Windows环境 前言 一、RACADM工具 RACADM工具 官网参考信息 https://www.dell.com/support/kbdoc/zh-cn/000126703/%E5%A6%82%E4%BD%95-%E9%87%8D%E7%BD…...
2024年Java架构篇之数据结构与算法面试题
2024年Java实战面试题_java 5 年 面试-CSDN博客 2024年Java架构篇之数据结构与算法面试题 1、判断一个数是否是2的N次方,比如2、4、8、16是6、10不是 1:01、2:10、3:011、4:100、7:0111、8:1000、15:01111、16:10000 if(n&(n-1) 0) 那么n就是2的次方 n > 1...

蓝桥杯刷题day06——平均
1、题目描述 有一个长度为n 的数组(n 是 10 的倍数),每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均,而更改第i 个数的代价为bi, 他想更改若干个数的值使得这10 种数出现的次数相等&…...
MySQL分区的优缺点
前言 数据库中的分区技术为处理大规模数据提供了一种有效的手段,通过将数据划分成更小的可管理单元,我们能够提高查询性能、简化数据维护并更灵活地管理存储空间。然而,在采用分区时,我们必须认真考虑分区键的选择和实施细节&…...
2023年度总结
目录 工作读书生活展望 用一百分总结这一年,给自己打80分。 这一年中中常常,坚持踏踏实实走好每一步。 工作 项目上,先后经历了「从库恢复后自动上线」、「主动切换RTO优化」、「MGR高可用统一」,以及高可用稳定性建设等。另外&…...
aspose-words在linux上安装字体
大多数情况下,使用 Aspose.Words 将 DOC 或 DOCX 文档转换为 PDF 格式。如果需要在 Linux 计算机上执行此操作,确保 Aspose.Words 以最佳准确性渲染文档。 最常见的是,需要转换的 DOC 和 DOCX 文档是在 Windows 或 Mac OS 操作系统上使用 Microsoft Word 创建的。因此,DOC…...

SpringBoot实战项目第一天
环境搭建 后端部分需要准备: sql数据库 创建SpringBoot工程,引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构,并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…...

C# 信号量(Semaphore)详细使用案例
文章目录 简介信号量的工作原理使用场景使用示例其他使用实例1. 数据库连接池管理2. 文件读写同步3. 生产者消费者问题4. 打印任务队列同步5. Web服务器并发请求限制 简介 在C#中,信号量(Semaphore)是.NET框架提供的一个同步类,位…...
《Docker极简教程》--Docker基础--Docker的基本概念
在这篇文章中我们先大致的了解以下Docker的基本概念,在后续的文章中我们会详细的讲解这些概念以及使用。 一、容器(Container) 1.1 容器的定义和特点 容器的定义 容器是一种轻量级、可移植的软件打包技术,用于打包应用及其依赖项和运行环境,…...

【AIGC核心技术剖析】DreamCraft3D一种层次化的3D内容生成方法
DreamCraft3D是一种用于生成高保真、连贯3D对象的层次化3D内容生成方法。它利用2D参考图像引导几何塑造和纹理增强阶段,通过视角相关扩散模型执行得分蒸馏采样,解决了现有方法中存在的一致性问题。使用Bootstrapped Score Distillation来提高纹理&#x…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...