Redis命令 - Sets命令组常用命令

Set集合,无序,一堆不重复值的组合。利用redis提供的set数据结构,可以存储一些集合性的数据。

使用场景:例如,实现如共同关注、共同喜好、二度好友等

1、SADD key member [member …]

向集合中添加一个或者多个成员
1.1、如果集合key 不存在,则新建集合key。并添加member元素到集合key中。myset不存在,执行下面命令后,就创建了myset并且成员是0和1

sadd myset 0 1
在这里插入图片描述
重复的成员不会被添加进去。sadd myset 0 1 0 1 也只会添加进一个0和一个1
在这里插入图片描述

1.2、如果已经在集合key中存在则忽略.

sadd myset 0
sadd myset 1
sadd myset 3
成员0和1已经存在,因此返回0。成员3不存在,因此返回1
在这里插入图片描述

1.3、如果key的类型不是集合则返回错误.

sadd myhash 1
在这里插入图片描述

2、SCARD key

返回集合存储的key的基数 (集合元素的数量).

key存在,返回集合的基数(元素的数量)。key不存在,则返回 0.
scard myset
scard myset1
在这里插入图片描述

3、SMEMBERS key

返回key集合所有的元素。不会删除元素。

smembers myset
在这里插入图片描述

4、SRANDMEMBER key [count]

随机返回key集合中的一个元素或者count个元素。不会删除元素

例如:myset有3个元素:0 1 3

  • 如果count是整数且小于元素的个数,返回含有 count 个不同的元素的数组
    在这里插入图片描述

  • 如果count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素
    在这里插入图片描述

  • 当count是负数,则会返回一个包含count的绝对值的个数元素的数组
    在这里插入图片描述

  • 如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况.
    在这里插入图片描述

以上是key存在的情况,会随机返回一个或者count个成员。当key不存在时,返回null
在这里插入图片描述

5、SPOP key [count]

从存储在key的集合中移除并返回一个或多个随机元素。会删除元素。

此操作与SRANDMEMBER类似,它从一个集合中返回一个或多个随机元素,但不删除元素。

spop myset
smembers myset
可见随机返回了一个成员3,并且删除了3
在这里插入图片描述

6、SMOVE source destination member

将member从source集合移动到destination集合中. 对于其他的客户端,在特定的时间元素将会作为source或者destination集合的成员出现.

6.1 先创建两个集合

sadd set1 0 1 2
sadd set2 1 2 3
在这里插入图片描述

6.2 source 集合不存在或者不包含指定的元素

smove命令不执行任何操作并且返回0.

smove set3 set2 2
smove set1 set2 4
在这里插入图片描述

6.3 source 集合存在且包含指定的元素

此成员将会从source集合中移除,并添加到destination集合中去。

smove set1 set2 0
smembers set1
smembers set2
在这里插入图片描述
如果destination集合已经存在该元素,则smove命令仅将该元素从source集合中移除
在这里插入图片描述

6.4 若source 和destination不是集合类型

则返回错误
在这里插入图片描述

7、SINTER key [key …]

返回指定所有的集合的成员的交集。例如推荐共同好友,拿到两个用户的好友列表,有交集,那就可以把用户A的其他好友推荐给用户B。例如向Bob推荐杨幂,向Tom推荐杨颖,因为他们都有共同的好友张大大。

例如:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}

sadd key1 a b c d
sadd key2 c
sadd key3 a c e
sinter key1 key2 key3
在这里插入图片描述

如果key不存在则被认为是一个空的集合。当给定的集合为空的时候,结果也为空.(一个集合为空,结果一直为空).
在这里插入图片描述

8、SUNION key [key …]

返回给定的多个集合的并集中的所有成员.

例如:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}

SUNION key1 key2 key3
SUNION key1 key2 key4
不存在的key可以认为是空的集合.
在这里插入图片描述

9、SDIFF key [key …]

返回一个集合与给定集合的差集的元素.

举例:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}

返回key3与key1和key2的差集。
SDIFF key1 key2 key3 = {b,d}

注:是最后一个key跟前面几个key的比较

Sdiff key1 key2 key3
Sdiff key1 key2
sdiff key1 key3
sdiff key2 key3
在这里插入图片描述
不存在的key认为是空集.
在这里插入图片描述

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

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

相关文章

如何在simulink中怎么获取足端轨迹代码解释?

在使用Java代码框架统计用户获取足端轨迹时,我们可以使用Simulink的外部接口功能和Java的网络编程来实现。 首先,我们需要在Simulink中配置外部接口以便与Java进行通信。可以使用Simulink中的TCP/IP或UDP模块来实现网络通信。假设我们选择TCP/IP模块。 …

#AIGC##VDB# 【一篇入门VDB】矢量数据库-从技术介绍到选型方向

文章概览: 这篇文章深入探讨了矢量数据库的基本概念、工作原理以及在人工智能领域的广泛应用。 首先,文章解释了矢量的数学和物理学概念,然后引入了矢量在数据科学和机器学习中的应用。随后,详细介绍了什么是矢量数据库&#xff0…

能见度传感器有什么特点-交通安全的保障

能见度传感器是一种用于测量能见度的设备,通常安装在高速公路、城市道路、桥梁等交通路段,以及隧道、停车场等封闭空间。这种传感器能够实时监测能见度值,并通过数据传输系统将数据发送到控制中心或相关管理部门,为交通安全管理、…

C++结合OpenCV:图像的加法运算

一、图像运算 针对图像的加法运算、位运算都是比较基础的运算。但是,很多复杂的图像处理功能正是借助这些基础的运算来完成的。所以,牢固掌握基础操作,对于更好地实现图像处理是非常有帮助的。本章简单介绍了加法运算、位运算,并…

自学Python笔记总结(更新中……)

自学Python笔记总结 网址数据类型类型查看类型,使用type内置类标识符 输出输入语句format函数的语法及用法数据类型的转换运算符算数运算符赋值运算符的特殊场景拆包 比较运算符逻辑运算符 与 短路位运算符运算符优先级 程序流程控制分支语句pass 占位 循环语句 whi…

DFT新手入门:VASPKIT生成模版INCAR

新手学习VASP计算时一般需要自行准备好VASP所需要的四个输入文件:INCAR POSCAR KPOINTS POTCAR。 其中POSCAR为计算任务的模型文件,POTCAR为与POSCAR中元素所对应的赝势,可根据要求选取。 KPOINTS的设置需要根据精度确定,一般通过vaspkit的1…

实现STM32烧写程序-(4) BIN文件结构

简介 BIN文件是一种二进制文件格式,用于存储和传输二进制数据。它包含了计算机或设备可以直接读取和执行的原始二进制数据。BIN文件通常用于存储程序、固件或其他二进制数据,例如嵌入式系统的固件、操作系统的映像文件等。 BIN文件的起源可以追溯到计算机…

获取本地IP网卡信息

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、获取本地IP,以及全部网卡信息总结 前言 一、获取本地IP,以及全部网卡信息 const os require(node:os) function getIPAdress(){/…

node-red实现ModBus-RTU 通信协议(RS485信号输出)的数据交互

node-red实现485型 - 温湿度变表数据转换 一、介绍二、 通讯协议2.1 通讯基本参数2.2 数据帧格式定义2.3 寄存器地址2.4 通讯协议示例以及解释 三、 node-red实现数据交互3.1 node-red读取数据3.2 node-red写回数据 本文参考《86 壳液晶温湿度变送器使用说明书(485 …

html5+css3+bootstrap+js 新闻网页

新闻网页练习打卡! 一、首页 二、社会 三、财经 四、视频展示 简易新闻网站(期末作业)

Cuda与Torch配置(For 集群服务器)超详细步骤

每次配置模型环境,无论是在windows,linux,集群服务器上都会在这里卡一段,为了未来配置方便,记录下配置注意事项 配置cuda和torch主要有几个要点,分别是: 显卡与驱动(NIVIADA drive…

一刀切转为精细化,门店如何进行「体检式」巡查(一)

在品牌经营过程中,无论是直营店还是加盟商,都需要做好统一的品牌门店管理。比如总部对门店环境卫生、员工服务质量、货品质量等进行定期或不定期的巡检抽查,以确保各门店保持统一标准。 以往,传统巡店只能通过有纸质表格或微信汇报…

前端react入门day03-react获取dom与组件通信

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 受控表单绑定 React中获取DOM 组件通信 父传子 父传子-基础实现 父传子-props说明 父传子 - 特殊的…

FFmpeg之AVFilter

文章目录 一、概述二、重要结构体2.1、AVFilterGraph2.2、AVFilter2.3、AVFilterContext 三、流程梳理3.1、FFmpeg AVFilter 使用整体流程3.2、过滤器构建流程3.2.1、分配AVFilterGraph3.2.2、创建过滤器源3.2.3、创建接收过滤器3.2.4、生成源和接收过滤器的输入输出3.2.5、通过…

Java开发+Intellij-idea+Maven+工程构建

Java开发Intellij-ideaMaven工程构建 Intellij-idea是一款流行的Java集成开发环境,它支持Maven作为项目管理和构建工具。Maven可以帮助开发者自动下载项目依赖的jar包,执行编译、测试、打包等生命周期任务。本资源将介绍如何在Intellij-idea中创建、导入…

精品基于Uniapp+springboot车辆充电桩缴费管理系统管理系统App-地图

《[含文档PPT源码等]精品基于Uniappspringboot充电桩管理系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:Java 后台框架:springboot、ssm 安…

element + table 每两行对比相同值列合并

在开始之前先要明确几个概念&#xff1a; 保持不变&#xff1a;{ rowspan: 1, colspan: 1 } 删除一个单元格&#xff1a;{ rowspan: 0, colspan: 0 } 合并一个单元格&#xff1a;{ rowspan: 2, colspan: 1 } <template><div><el-table:data"tableData&quo…

Appium 自动化测试

1.Appium介绍 1&#xff0c;appium是开源的移动端自动化测试框架&#xff1b; 2&#xff0c;appium可以测试原生的、混合的、以及移动端的web项目&#xff1b; 3&#xff0c;appium可以测试ios&#xff0c;android应用&#xff08;当然了&#xff0c;还有firefoxos&#xff09;…

web自动化实现登录的几种方式

目录 前言 一、pythonunittest框架实现登录功能 二、pythonselenium实现登录功能 三、pythonrequests库实现登录功能 前言 今天主要想介绍python语言不同的自动化测试框架的结合方式来模拟登录功能。想了解自动化测试框架的同学不要错过哦&#xff01; 一、pythonunittest框…

Windows 下 QT开发环境的搭建:

下载QT:Index of /archive/qt/5.14 下载Cmake :CMake - Upgrade Your Software Build System (1)QT在windows,C, 打包exe&#xff1a; step1:window上安装QT软件&#xff1a; Windows下的QT系统开发环境搭建_qt windows-CSDN博客. step2:新建一个界面工程&#xff1a; (1)打…