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

目录

一、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) 5127.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) 5127.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) 5127.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) 5127.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.mzph.cn/bicheng/61922.shtml

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

相关文章

sql 查询语句:将终端数据形式转换成insert语句

文本转换:sql 查询语句:将终端数据形式转换成insert语句 如上,写过后端的都知道,从生产或其他地方拿到的数据,有可能会是图一;但实际上,我们需要图二的数据; 不废话,直接…

后端开发入门

后端开发最佳实践详解 1. 引言 后端开发不仅仅是编写功能代码,还涉及到如何构建稳定、可靠且高效的系统。掌握后端开发的最佳实践,可以帮助您避免常见的错误,提高代码质量,确保应用的可维护性和扩展性。以下内容将详细讲解这些关…

Ajax入门程序

前端和后台本来是没有联系的,前端想要从后台获取数据,就必须涉及到两个程序的交互,而Ajax就是用于完成两端交互的技术。 Ajax:Asynchronous JavaScript And XML:异步的JavaScript和XML。 异步交互:可以在不…

详解Qt 中使用虚拟键盘(软键盘qtvirtualkeyboard)

文章目录 详解 Qt 中使用虚拟键盘(软键盘:QtVirtualKeyboard)1. 虚拟键盘简介1.1 虚拟键盘的应用场景 2. 安装和配置2.1 安装 QtVirtualKeyboard2.2 配置环境变量 3. 使用虚拟键盘3.1 示例代码main.cppwidget.hwidget.cpp 4. 总结 详解 Qt 中…

第2.7节 AIGC+学术论文——选题与定位(二)

2.1 选题与定位 主题确定:选择一个既符合学术兴趣又具有研究价值的主题。 身份背景研究领域问题具体化使用AI搜索:文献回顾最新研究选题可行性与实际应用迭代 2.2.1身份背景研究领域问题具体化 (一)身份背景 根据以下模板…

TCL嵌入式面试题及参考答案

USB2.0 和 USB3.0 的速度区别是什么? USB2.0 和 USB3.0 在速度上有显著的区别。USB2.0 理论上的最高传输速度为 480Mbps,也就是 60MB/s 左右。而 USB3.0 的理论传输速度则可达到 5Gbps,即约 625MB/s ,这比 USB2.0 快了很多倍。 在实际应用中,USB2.0 通常用于一些对速度要求…

微信小程序中使用iconfont的详细教程

我们知道微信小程序对包体积有很严格的要求,最大不超过2M,而图片资源对包体检有至关重要的影响,所以使用自定义的图标字体来代替大量图标图片也是提高小程序性能的重要手段,总的来说在微信小程序中使用 IconFont(图标字…

C++数据结构与算法

C数据结构与算法 1.顺序表代码模版 C顺序表模版 #include <iostream> using namespace std; // 可以根据需要灵活变更类型 #define EleType intstruct SeqList {EleType* elements;int size;int capacity; };// Init a SeqList void InitList(SeqList* list, int capa…

【Rust Iterator 之 fold,map,filter,for_each】

Rust Iterator 之 fold,map,filter,for_each 前言mapfor_each通过源码看for_each foldfilter总结 前言 在Iterator 一文中&#xff0c;我们提到过Iterator时惰性的&#xff0c;也就是当我们将容器转换成迭代器时不会产生任何的迭代行为&#xff0c;所以在使用时开发者还需要将…

vscode连接远程开发机报错

远程开发机更新&#xff0c;vscode连接失败 报错信息 "install" terminal command done Install terminal quit with output: Host key verification failed. Received install output: Host key verification failed. Failed to parse remote port from server ou…

多线程下使用数据库 - 20241124

问题 并发性较低&#xff0c;每秒千次但是较高一致性&#xff0c;比如利用数据库中的数据进行判断是否执行某个操作 存在的问题是&#xff0c;如何只锁定判断相关的数据&#xff0c;而不影响数据库操作无关数据。脏读/不可重复读/幻读 解决方案 利用数据InnoDB引擎的LBCC和…

【AIGC】大模型面试高频考点-RAG篇

【AIGC】大模型面试高频考点-RAG篇 &#xff08;1&#xff09;RAG的基本原理&#xff08;2&#xff09;RAG有哪些评估方法&#xff1f;&#xff08;3&#xff09;RAG有哪些评估框架&#xff1f;&#xff08;4&#xff09;RAG各模块有哪些优化策略&#xff1f; &#xff08;1&am…

标准操作规程(SOP)制定方法+模板指南

在企业的成功之路上&#xff0c;拥有制定、传播以及管理流程文档与详细步骤指南的能力至关重要。众多组织都将标准操作规程&#xff08;SOP&#xff09;作为指导其工作流程操作的核心文档形式。 但SOP的作用远不止于操作指南&#xff1b;它们更像是高性能车辆中的精密GPS系统。…

【拥抱AI】如何使用Milvus向量数据库进行数据库检索?

使用向量数据库进行数据库检索是一种高效的方法&#xff0c;特别是在处理大规模、高维度的数据时。以下是详细的步骤&#xff0c;帮助你理解和实施这一过程&#xff1a; 1. 准备环境 选择向量数据库 常见的向量数据库有&#xff1a; Faiss&#xff1a;由Facebook AI Resear…

硬件工程师零基础入门:一.电子设计安全要点与欧姆定律

硬件工程师零基础入门:一.电子设计安全要点与欧姆定律 第一节 电子设计安全要点第二节 欧姆定律 第一节 电子设计安全要点 电路小白最好先买直流稳压电源&#xff08;将高压转成低压直流电&#xff09;使用&#xff0c;尽量不要使用市电。 1.尽量不要捏住电源两端。 正确做法&a…

ShuffleNet:一种为移动设备设计的极致高效的卷积神经网络

摘要 https://arxiv.org/pdf/1707.01083 我们介绍了一种名为ShuffleNet的计算效率极高的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如10-150 MFLOPs&#xff09;而设计。新架构利用两种新操作&#xff1a;逐…

python基础导包

Python项目代码结构与导包详解 目录 引言 Python项目的基本结构 2.1 单文件项目2.2 多模块项目2.3 包结构项目2.4 示例项目结构 模块与包 3.1 模块&#xff08;Module&#xff09;3.2 包&#xff08;Package&#xff09;3.3 子包&#xff08;Subpackage&#xff09; 导包&a…

学习Zookeeper

Zookeeper有手就行 1. 初识ZooKeeper1.1 安装ZooKeeper1.2 ZooKeeper命令操作1.2.1 Zookeeper数据模型1.2.2 Zookeeper 服务端常用命令1.2.3 Zookeeper客户端常用命令 2. ZooKeeperJavaAPl操作2.1 Curator介绍2.2 CuratorAPI常用操作2.2.0 引入Curator支持2.2.1 建立连接2.2.2 …

ctfshow-Misc入门(1-16)

misc1 查看图片得到flag misc2 1、打开文本&#xff0c;发现以“塒NG”开头 3、修改文件格式为png格式 4、查看图片&#xff0c;得到flag *遇到的问题&#xff1a;无法直接修改后缀名 *解决方法&#xff1a;需要点击文件夹&#xff0c;然后点击查看&#xff0c;将文件拓…

由于centos停更,yum、docker等不支持,采用阿里云仓库搭建K8S

一&#xff1a;准备 服务器信息主机名IP地址Centos7.9node1-master192.168.35.130Centos7.9node2192.168.35.131 # 查看系统版本 cat /etc/centos-release # 查看内核版本 uname -sr二&#xff1a;服务器前置操作 每个节点都需要操作 #使用 hostnamectl set-hostname设置主机…