Redis五大基本类型——Set集合命令详解(命令用法详解+思维导图详解)

news2024/11/24 2:30:57

目录

一、Set集合类型介绍

二、常见命令

1、SADD

2、SMEMBERS

3、SISMEMBER

4、SCARD

5、SRANDMEMBER

6、SPOP

7、SMOVE

8、SREM

​编辑

9、集合间操作

(1)SINTER

(2)SINTERSTORE

(3)SUNION

(4)SUNIONSTORE

(5)SDIFF

(6)SDIFFSTORE

三、命令小结

 相关内容:

Redis五大基本类型——Hash哈希命令详解(命令用法详解+思维导图详解)-CSDN博客

Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)_redis 字符串-CSDN博客

Redis五大基本类型——List列表命令详解(命令用法详解+思维导图详解)_redis list塞数据-CSDN博客


一、Set集合类型介绍

        集合类型也是保存多个字符串类型的元素,但和列表不同的是,元素之间是无序的,元素不允许重复。一个集合中最多可以存储 2^32-1 个元素。

        Redis除了支持集合内的增删改查操作,同时还支持多个集合取交集、并集、差集,合理地利用好集合类型,能在实际开发中解决很多问题。

集合类型的特点:

1、集合中的元素是序的,排列顺序与插入顺序无关,是随机的。

2、集合中的元素不允许重复。

二、常见命令

1、SADD

        将一个或者多个元素添加到 set 中。注意,重复的元素无法添加到 set 中。

语法:

SADD key member [member ...]

返回值:

本次添加成功的元素个数

示例:

127.0.0.1:6379> SADD mykey 1 2 3 4 5
(integer) 5
127.0.0.1:6379> smembers mykey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SADD mykey 1 2 3 4 5
(integer) 0
127.0.0.1:6379> smembers mykey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

2、SMEMBERS

        获取一个 set 中的所有元素,元素间的顺序是无序的。

语法:

SMEMBERS key

返回值:

所有元素的列表

示例:

127.0.0.1:6379> sadd mykey 1 2 3
(integer) 3
127.0.0.1:6379> sadd mykey "hello" "world"
(integer) 2
127.0.0.1:6379> SMEMBERS mykey
1) "2"
2) "hello"
3) "3"
4) "1"
5) "world"

3、SISMEMBER

        判断一个元素在不在 set 中。

语法:

SISMEMBER key member

返回值:

1表示元素在 set 中

0表示元素不在 set 中或者key不存在

示例:

127.0.0.1:6379> SMEMBERS mykey
1) "2"
2) "hello"
3) "3"
4) "1"
5) "world"
127.0.0.1:6379> SISMEMBER mykey 1
(integer) 1
127.0.0.1:6379> SISMEMBER mykey 111
(integer) 0
127.0.0.1:6379> SISMEMBER nilkey 1
(integer) 0

4、SCARD

        获取 set 中的元素个数。

语法:

SCARD key

返回值:

set 中的元素个数

示例:

127.0.0.1:6379> SMEMBERS mykey
1) "2"
2) "1"
3) "3"
4) "hello"
5) "world"
127.0.0.1:6379> SCARD mykey
(integer) 5
127.0.0.1:6379> SCARD nilkey
(integer) 0

5、SRANDMEMBER

        从 set 中返回一个或多个元素。注意,由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,可以看作是随机的。

语法:

SRANDMEMBER key [count]

返回值:

取出的元素

示例:

127.0.0.1:6379> sadd key a b c d e f g
(integer) 7
127.0.0.1:6379> SRANDMEMBER key
"e"
127.0.0.1:6379> SRANDMEMBER key
"f"
127.0.0.1:6379> SRANDMEMBER key 2
1) "f"
2) "d"
127.0.0.1:6379> SRANDMEMBER key 4
1) "f"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> SRANDMEMBER key 7
1) "c"
2) "f"
3) "b"
4) "a"
5) "e"
6) "g"
7) "d"
127.0.0.1:6379> SRANDMEMBER key 10
1) "c"
2) "f"
3) "b"
4) "a"
5) "e"
6) "g"
7) "d"
127.0.0.1:6379> smembers key
1) "f"
2) "b"
3) "a"
4) "c"
5) "e"
6) "g"
7) "d"

6、SPOP

        从 set 中删除并返回一个或多个元素。注意,由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,可以看作是随机的。

语法:

SPOP key [count]

返回值:

取出的元素

示例:

127.0.0.1:6379> sadd mykey 1
(integer) 1
127.0.0.1:6379> sadd mykey 2
(integer) 1
127.0.0.1:6379> sadd mykey 3
(integer) 1
127.0.0.1:6379> smembers mykey
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SPOP mykey
"2"
127.0.0.1:6379> smembers mykey
1) "1"
2) "3"
127.0.0.1:6379> sadd mykey 4 5 6 7 8 9  
(integer) 6
127.0.0.1:6379> smembers mykey
1) "1"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"
127.0.0.1:6379> SPOP mykey 2
1) "3"
2) "4"
127.0.0.1:6379> SPOP mykey 3
1) "7"
2) "1"
3) "8"
127.0.0.1:6379> smembers mykey
1) "5"
2) "6"
3) "9"

注意SRANDMEMBER 和 SPOP 的区别:

SRANDMEMBER 只进行取出操作,对集合中的元素不会删除

SPOP 进行取出和删除操作,会删除集合中的元素

7、SMOVE

        将一个元素从源 set 取出并放入目标 set 中。

语法:

SMOVE source destination member

返回值:

1 表示移动成功

0 表示失败

示例:

127.0.0.1:6379> sadd skey 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> smembers skey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> SMOVE skey dkey 1
(integer) 1
127.0.0.1:6379> SMOVE skey dkey 3
(integer) 1
127.0.0.1:6379> smembers skey
1) "2"
2) "4"
3) "5"
4) "6"
127.0.0.1:6379> smembers dkey
1) "1"
2) "3"

8、SREM

        将指定的元素从 set 中删除。

语法:

SREM key member [member ...]

返回值:

本次操作删除的元素个数

示例:

127.0.0.1:6379> sadd mykey one
(integer) 1
127.0.0.1:6379> sadd mykey two
(integer) 1
127.0.0.1:6379> sadd mykey three
(integer) 1
127.0.0.1:6379> smembers mykey
1) "one"
2) "three"
3) "two"
127.0.0.1:6379> SREM mykey one
(integer) 1
127.0.0.1:6379> SREM mykey four
(integer) 0
127.0.0.1:6379> smembers mykey
1) "three"
2) "two"

9、集合间操作

        在Set类型中可使用命令进行 交集、并集、差集 操作:

(1)SINTER

        获取给定 set 的交集中的元素。

语法:

SINTER key [key ...]

返回值:

交集的元素

示例:

127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> 
127.0.0.1:6379> SINTER key1 key2
1) "f"
2) "a"
3) "c"

(2)SINTERSTORE

        获取给定 set 的交集中的元素,并保存到目标 set 中。

语法:

SINTERSTORE destination key [key ...]

返回值:

交集的元素个数

示例:

127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> SINTERSTORE deskey key1 key2
(integer) 3
127.0.0.1:6379> smembers deskey
1) "f"
2) "a"
3) "c"

(3)SUNION

        获取给定的 set 的并集中的元素。

语法:

SUNION key [key ...]

返回值:

并集的元素

示例:

127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5

127.0.0.1:6379> SUNION key1 key2
1) "f"
2) "b"
3) "a"
4) "c"
5) "e"
6) "i"
7) "h"
8) "d"

(4)SUNIONSTORE

        获取给定 set 的并集中的元素,并保存到目标 set 中。

语法:

SUNIONSTORE destination key [key ...]

返回值:

并集的元素个数

示例:

127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5

127.0.0.1:6379> SUNIONSTORE deskey key1 key2
(integer) 8
127.0.0.1:6379> smembers deskey
1) "f"
2) "b"
3) "a"
4) "c"
5) "e"
6) "i"
7) "h"
8) "d"

(5)SDIFF

        获取给定的 set 差集中的元素。

语法:

SDIFF key [key ...]

返回值:

差集的元素

示例:

127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5

127.0.0.1:6379> SDIFF key1 key2
1) "b"
2) "e"
3) "d"
127.0.0.1:6379> SDIFF key2 key1
1) "h"
2) "i"

#返回前者有而后者没有的元素

(6)SDIFFSTORE

        获取给定的 set 差集中的元素,并保存到目标 set 中。

语法:

SDIFFSTORE destination key [key ...]

返回值:

差集的元素个数

示例:

127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5

127.0.0.1:6379> SDIFFSTORE deskey_1 key1 key2
(integer) 3
127.0.0.1:6379> SDIFFSTORE deskey_2 key2 key1
(integer) 2
127.0.0.1:6379> smembers deskey_1
1) "b"
2) "e"
3) "d"
127.0.0.1:6379> smembers deskey_2
1) "h"
2) "i"

三、命令小结


   以上就是 Redis五大基本类型——SET集合命令详解(命令用法详解+思维导图详解)的全部内容了,希望能对你有所帮助!你的点赞收藏关注是对我最大的支持!

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

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

相关文章

CCE-基础

背景: 虚拟化产生解决物理机资源浪费问题,云计算出现实现虚拟化资源调度和管理,容器出现继续压榨虚拟化技术产生的资源浪费,用命名空间隔离(namespace) 灰度升级(升级中不影响业务&#xff09…

Chrome离线安装包下载

1、问Chrome的官网:https://www.google.cn/chrome/ 直接下载的是在线安装包,安装需要联网。 2、如果需要在无法联网的设备上安装Chrome,需要在上面的地址后面加上?standalone1。 Chrome离线安装包下载地址:https://www.google.c…

二进制 分析工具:Radare2、r2frida、Binutils、file、string、as、nm、ldd、objdump、readelf、strip

1、二进制 分析工具 工欲善其事,必先利其器,在二进制安全的学习中,​使用工具尤为重要。遇到一个不熟悉的文件时, 首先要确定 "这是什么类型的文件",回答这个问题的首要原则是,绝不要根据文件的扩…

快速图像识别:落叶植物叶片分类

1.背景意义 研究背景与意义 随着全球生态环境的变化,植物的多样性及其在生态系统中的重要性日益受到关注。植物叶片的分类不仅是植物学研究的基础,也是生态监测、农业管理和生物多样性保护的重要环节。传统的植物分类方法依赖于人工观察和专家知识&…

Chrome 浏览器 131 版本新特性

Chrome 浏览器 131 版本新特性 一、Chrome 浏览器 131 版本更新 1. 在 iOS 上使用 Google Lens 搜索 自 Chrome 126 版本以来,用户可以通过 Google Lens 搜索屏幕上看到的任何图片或文字。 要使用此功能,请访问网站,并点击聚焦时出现在地…

Windows系统编程 - 注册表

文章目录 前言注册表介绍打开和关闭注册表RegOpenKeyExRegCloseKey测试案例 创建删除子键RegCreateKeyEx创建子键RegDeleteKey删除子键 写入删除键值RegQueryValueExRegSetValueExRegDeleteValue测试案例 子键和项的枚举RegEnumKeyExRegEnumValueRegQueryInfoKey测试案例 总结 …

Jenkins + gitee 自动触发项目拉取部署(Webhook配置)

目录 前言 Generic Webhook Trigger 插件 下载插件 ​编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建,本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目; Generic Webhook Trigger 插件 实现代码推送后,触…

Failed to start Docker Application Container Engine

说明: 1)访问应用业务,读取不到数据,show databases;查看数据库报错 2)重启docker服务,服务启动失败,查看日志报错如下图所示 3)报错信息:chmod /data/docker: read-only…

1、HCIP之RSTP协议与STP相关安全配置

目录 RSTP—快速生成树协议 STP STP的缺点: STP的选举(Listening状态中): RSTP P/A(提议/同意)机制 同步机制: 边缘端口的配置: RSTP的端口角色划分: ensp模拟…

Kafka 生产者优化与数据处理经验

Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…

Hello-Go

Hello-Go 环境变量 GOPATH 和 GOROOT :不同于其他语言,go中没有项目的说法,只有包,其中有两个重要的路径,GOROOT 和 GOPATH Go开发相关的环境变量如下: GOROOT:GOROOT就是Go的安装目录&…

android 实现答题功能

一、效果 二、实现思路 1、界面实现 实现起来其实不难,首先我们可以看到,界面是由答题进度、题目、选项ABCD组成,现在就是要考虑实现方式,答题进度可以使用Textviewprogressbar实现,题目直接使用Textview,…

基于Java Springboot高校工作室管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

React(二)

文章目录 项目地址七、数据流7.1 子组件传递数据给父组件7.1.1 方式一:給父设置回调函数,传递给子7.1.2 方式二:直接将父的setState传递给子7.2 给props传递jsx7.2.1 方式一:直接传递组件给子类7.2.2 方式二:传递函数给子组件7.3 props类型验证7.4 props的多层传递7.5 cla…

浅谈丨功能安全测试,汽车的守护者

随着新能源汽车迅猛的发展,各类车型频频面世,同时辅助驾驶/自动驾驶等智驾功能也在不断迭代,使得整个汽车系统的复杂性越来越高,最终导致消费者不得不对如今的汽车质量和安全性提出质疑。 如何打破质疑? 那就不得不搬…

bridge-multicast-igmpsnooping

# 1.topo # 2.创建命名空间 ip netns add ns0 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns0-veth0 type veth peer name hn0-veth0 ip link add ns1-veth0 type veth peer name hn1-veth0 ip link add ns2-veth0 type veth pe…

密码学11

概论 计算机安全的最核心三个关键目标(指标)/为:保密性 Confidentiality、完整性 Integrity、可用性 Availability ,三者称为 CIA三元组 数据保密性:确保隐私或是秘密信息不向非授权者泄漏,也不被非授权者使…

MIT 6.S081 | 操作系统 | Lab1: Xv6 and Unix utilities

Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务1.启动XV6(easy)2.Sleep(easy)-练手的,就是熟悉一下怎么在xv6项目中加.c文件,生成可执行程序并进行测试的1.解析rm.c2.argc 如何被赋值3.Sleep代码4.makefile编辑5.通过make…

在SpringBoot项目中集成MongoDB

文章目录 1. 准备工作2. 在SpringBoot项目中集成MongoDB2.1 引入依赖2.2 编写配置文件2.3 实体类 3. 测试4. 文档操作4.1 插入操作4.1.1 单次插入4.1.2 批量插入 4.2 查询操作4.2.1 根据id查询4.2.2 根据特定条件查询4.2.3 正则查询4.2.4 查询所有文档4.2.5 排序后返回 4.3 删除…

美团-Leaf ID算法集成到SpringBoot项目

提前准备 下载源码 GitHub地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 下载下来 然后 maven install 安装到本地仓库 再需要用到该ID算法的项目中引入 以下内容 <!-- 本地仓库中的Leaf --> <dependency><artifactId>leaf-boot-starte…