一步一步学习Redis——五大数据类型之集合(Set)的相关命令

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 一步一步学习Redis——五大数据类型之集合(Set)的相关命令

文章目录:


1.开篇

2.Redis集合(Set)的相关命令 

2.1 SADD命令

语法

返回值

2.2 SMEMBERS命令 

语法

返回值

2.3 SCARD命令

语法

返回值

2.4 SISMEMBER命令

语法

返回值

2.5 SPOP命令

语法

返回值

2.6 SRANDMEMBER命令

语法

返回值

2.7 SREM命令

语法

返回值

2.8 SUNION命令

语法

返回值

2.9 SUNIONSTORE命令 

语法

返回值

2.10 SINTER命令

语法

返回值

2.11 SINTERSTORE命令 

语法

返回值

2.12 SDIFF命令

语法

返回值

2.13 SDIFFSTORE命令 

语法

返回值

2.14 SMOVE命令

语法

返回值

2.15 SSCAN命令

语法

返回值

1.开篇


Redis Set String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)

集合中最大的成员数为 232 - 1 (4294967295,每个集合可存储40多亿个成员)

2.Redis集合(Set)的相关命令


序号

命令及描述

1

SADD key member1 [member2]
向集合添加一个或多个成员

2

SCARD key
获取集合的成员数

3

SDIFF key1 [key2]
返回第一个集合与其他集合之间的差异。

4

SDIFFSTORE destination key1 [key2]
返回给定所有集合的差集并存储在 destination

5

SINTER key1 [key2]
返回给定所有集合的交集

6

SINTERSTORE destination key1 [key2]
返回给定所有集合的交集并存储在 destination

7

SISMEMBER key member
判断 member 元素是否是集合 key 的成员

8

SMEMBERS key
返回集合中的所有成员

9

SMOVE source destination member
member 元素从 source 集合移动到 destination 集合

10

SPOP key
移除并返回集合中的一个随机元素

11

SRANDMEMBER key [count]
返回集合中一个或多个随机数

12

SREM key member1 [member2]
移除集合中一个或多个成员

13

SUNION key1 [key2]
返回所有给定集合的并集

14

SUNIONSTORE destination key1 [key2]
所有给定集合的并集存储在 destination 集合中

15

SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素


2.1 SADD命令

Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。

假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。

当集合 key 不是集合类型时,返回一个错误。

注意: Redis2.4 版本以前, SADD 只接受单个成员值。

语法

redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN

返回值

被添加到集合中的新元素的数量,不包括被忽略的元素。


2.2 SMEMBERS命令 

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

语法

redis 127.0.0.1:6379> SMEMBERS key

返回值

集合中的所有成员。

2.3 SCARD命令

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

语法

redis 127.0.0.1:6379> SCARD KEY_NAME

返回值

集合的数量。当集合 key 不存在时,返回 0

2.4 SISMEMBER命令

Redis Sismember 命令判断成员元素是否是集合的成员。

语法

redis 127.0.0.1:6379> SISMEMBER KEY VALUE

返回值

如果成员元素是集合的成员,返回 1 如果成员元素不是集合的成员,或 key 不存在,返回 0

2.5 SPOP命令

Redis Spop 命令用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。

该命令类似 SRANDMEMBER 命令,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动。

语法

redis 127.0.0.1:6379> SPOP key [count]

返回值

被移除的随机元素。当集合不存在或是空集时,返回 nil

2.6 SRANDMEMBER命令

Redis Srandmember 命令用于返回集合中的一个随机元素。

Redis 2.6 版本开始, Srandmember 命令接受可选的 count 参数:

·       如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。

·       如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动。

语法

redis 127.0.0.1:6379> SRANDMEMBER KEY [count]

返回值

只提供集合 key 参数时,返回一个元素;如果集合为空,返回 nil 如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。

2.7 SREM命令

Redis Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。

key 不是集合类型,返回一个错误。

Redis 2.4 版本以前, SREM 只接受单个成员值。

语法

redis 127.0.0.1:6379> SREM KEY MEMBER1..MEMBERN

返回值

被成功移除的元素的数量,不包括被忽略的元素。

2.8 SUNION命令

Redis Sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。

语法

redis 127.0.0.1:6379> SUNION KEY KEY1..KEYN

返回值

并集成员的列表。


2.9 SUNIONSTORE命令 

Redis Sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖。

语法

redis 127.0.0.1:6379> SUNIONSTORE destination key [key ...]

返回值

结果集中的元素数量。

2.10 SINTER命令

Redis Sinter 命令返回给定所有给定集合的交集。不存在的集合 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)

语法

redis 127.0.0.1:6379> SINTER KEY KEY1..KEYN

返回值

交集成员的列表。


2.11 SINTERSTORE命令 

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

语法

redis 127.0.0.1:6379> SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN

返回值

返回存储交集的集合的元素数量。

2.12 SDIFF命令

Redis Sdiff 命令返回第一个集合与其他集合之间的差异,也可以认为说第一个集合中独有的元素。不存在的集合 key 将视为空集。

差集的结果来自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,也不是整个 FIRST_KEY OTHER_KEY1..OTHER_KEYN 的差集。

实例:

key1 = {a,b,c,d}

key2 = {c}

key3 = {a,c,e}

SDIFF key1 key2 key3 = {b,d}

语法

redis 127.0.0.1:6379> SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN

返回值

包含差集成员的列表。


2.13 SDIFFSTORE命令 

Redis Sdiffstore 命令将给定集合之间的差集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖。

语法

redis 127.0.0.1:6379> SDIFFSTORE DESTINATION_KEY KEY1..KEYN

返回值

结果集中的元素数量。

2.14 SMOVE命令

Redis Smove 命令将指定成员 member 元素从 source 集合移动到 destination 集合。

SMOVE是原子性操作。

如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。

destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。

source destination 不是集合类型时,返回一个错误。

语法

redis 127.0.0.1:6379> SMOVE SOURCE DESTINATION MEMBER

返回值

如果成员元素被成功移除,返回 1 如果成员元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0

2.15 SSCAN命令

Redis Sscan 命令用于迭代集合中键的元素,Sscan 继承自Scan

语法

redis 127.0.0.1:6379> SSCAN key cursor [MATCH pattern] [COUNT count]

·       cursor - 游标。

·       pattern - 匹配的模式。

·       count - 指定从数据集里返回多少元素,默认值为 10

返回值

数组列表。

相关文章
|
6月前
|
存储 缓存 监控
Redis设计与实现——Redis命令参考与高级特性
Redis 是一个高性能的键值存储系统,支持丰富的数据类型(字符串、列表、哈希、集合等)和多种高级功能。本文档涵盖 Redis 的核心命令分类,包括数据类型操作、事务与脚本、持久化、集群管理、系统监控等。特别介绍了事务的原子性特性、Lua 脚本的执行方式及优势、排序机制、发布订阅模型以及慢查询日志和监视器工具的使用方法。适用于开发者快速掌握 Redis 常用命令及其应用场景,优化系统性能与可靠性。
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
333 5
|
2月前
|
存储 缓存 NoSQL
Redis基础命令与数据结构概览
Redis是一个功能强大的键值存储系统,提供了丰富的数据结构以及相应的操作命令来满足现代应用程序对于高速读写和灵活数据处理的需求。通过掌握这些基础命令,开发者能够高效地对Redis进行操作,实现数据存储和管理的高性能方案。
115 12
|
2月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
3月前
|
存储 缓存 人工智能
Redis六大常见命令详解:从set/get到过期策略的全方位解析
本文将通过结构化学习路径,帮助读者实现从命令语法掌握到工程化实践落地的能力跃迁,系统性提升 Redis 技术栈的应用水平。
|
4月前
|
NoSQL Redis
Lua脚本协助Redis分布式锁实现命令的原子性
利用Lua脚本确保Redis操作的原子性是分布式锁安全性的关键所在,可以大幅减少由于网络分区、客户端故障等导致的锁无法正确释放的情况,从而在分布式系统中保证数据操作的安全性和一致性。在将这些概念应用于生产环境前,建议深入理解Redis事务与Lua脚本的工作原理以及分布式锁的可能问题和解决方案。
203 8
|
6月前
|
存储 缓存 NoSQL
Redis中的常用命令-get&set&keys&exists&expire&ttl&type的详细解析
总的来说,这些Redis命令提供了处理存储在内存中的键值对的便捷方式。通过理解和运用它们,你可以更有效地在Redis中操作数据,使其更好地服务于你的应用。
453 17
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
162 1
|
4月前
|
存储 缓存 JavaScript
Set和Map有什么区别?
Set和Map有什么区别?
392 1
|
1月前
|
存储 算法 容器
set_map的实现+set/map加持秒杀高频算法题锻炼算法思维
`set`基于红黑树实现,支持有序存储、自动去重,增删查效率为O(logN)。通过仿函数可自定义排序规则,配合空间配置器灵活管理内存。不支持修改元素值,迭代器失效需注意。`multiset`允许重复元素。常用于去重、排序及查找场景。
下一篇
oss云网关配置