Redis(15)Redis的集合(Set)类型有哪些常用命令?

Redis 的集合(Set)类型是无序的字符串集合,不允许重复元素。集合类型支持一系列常用命令,用于添加、删除和查询集合中的元素。下面详细介绍 Redis 集合类型的常用命令,并结合代码示例进行展示。

1. SADD - 向集合添加一个或多个元素

SADD 命令用于向集合添加一个或多个元素,如果元素已存在则忽略。

bash 复制代码
SADD key member1 [member2 ...]

示例:

bash 复制代码
SADD myset "Hello"
SADD myset "World"

2. SREM - 移除集合中的一个或多个元素

SREM 命令用于移除集合中的一个或多个元素,如果元素不存在则忽略。

bash 复制代码
SREM key member1 [member2 ...]

示例:

bash 复制代码
SREM myset "World"

3. SMEMBERS - 返回集合中的所有成员

SMEMBERS 命令用于返回集合中的所有成员。

bash 复制代码
SMEMBERS key

示例:

bash 复制代码
SMEMBERS myset

4. SISMEMBER - 判断元素是否是集合的成员

SISMEMBER 命令用于判断元素是否是集合的成员。

bash 复制代码
SISMEMBER key member

示例:

bash 复制代码
SISMEMBER myset "Hello"
SISMEMBER myset "World"

5. SCARD - 返回集合中元素的数量

SCARD 命令用于返回集合中元素的数量。

bash 复制代码
SCARD key

示例:

bash 复制代码
SCARD myset

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

SPOP 命令用于随机移除并返回集合中的一个元素。

bash 复制代码
SPOP key

示例:

bash 复制代码
SPOP myset

7. SRANDMEMBER - 随机返回集合中的一个或多个元素,但不移除

SRANDMEMBER 命令用于随机返回集合中的一个或多个元素,但不移除。

bash 复制代码
SRANDMEMBER key [count]

示例:

bash 复制代码
SRANDMEMBER myset
SRANDMEMBER myset 2

8. SMOVE - 将集合中的元素移动到另一个集合

SMOVE 命令用于将集合中的元素移动到另一个集合。

bash 复制代码
SMOVE source destination member

示例:

bash 复制代码
SADD myset1 "one"
SADD myset2 "two"
SMOVE myset1 myset2 "one"

9. SUNION - 返回所有给定集合的并集

SUNION 命令用于返回所有给定集合的并集。

bash 复制代码
SUNION key1 [key2 ...]

示例:

bash 复制代码
SADD myset1 "a"
SADD myset1 "b"
SADD myset2 "b"
SADD myset2 "c"
SUNION myset1 myset2

10. SINTER - 返回所有给定集合的交集

SINTER 命令用于返回所有给定集合的交集。

bash 复制代码
SINTER key1 [key2 ...]

示例:

bash 复制代码
SADD myset1 "a"
SADD myset1 "b"
SADD myset2 "b"
SADD myset2 "c"
SINTER myset1 myset2

11. SDIFF - 返回所有给定集合的差集

SDIFF 命令用于返回所有给定集合的差集。

bash 复制代码
SDIFF key1 [key2 ...]

示例:

bash 复制代码
SADD myset1 "a"
SADD myset1 "b"
SADD myset2 "b"
SADD myset2 "c"
SDIFF myset1 myset2

12. SUNIONSTORE - 将所有给定集合的并集存储在指定的集合中

SUNIONSTORE 命令用于将所有给定集合的并集存储在指定的集合中。

bash 复制代码
SUNIONSTORE destination key1 [key2 ...]

示例:

bash 复制代码
SUNIONSTORE resultset myset1 myset2
SMEMBERS resultset

13. SINTERSTORE - 将所有给定集合的交集存储在指定的集合中

SINTERSTORE 命令用于将所有给定集合的交集存储在指定的集合中。

bash 复制代码
SINTERSTORE destination key1 [key2 ...]

示例:

bash 复制代码
SINTERSTORE resultset myset1 myset2
SMEMBERS resultset

14. SDIFFSTORE - 将所有给定集合的差集存储在指定的集合中

SDIFFSTORE 命令用于将所有给定集合的差集存储在指定的集合中。

bash 复制代码
SDIFFSTORE destination key1 [key2 ...]

示例:

bash 复制代码
SDIFFSTORE resultset myset1 myset2
SMEMBERS resultset

示例代码

下面是一个完整的示例,展示了如何使用上述常用命令操作 Redis 集合类型:

bash 复制代码
# 启动 Redis CLI
redis-cli

# 向集合添加元素
SADD myset "Hello"
SADD myset "World"

# 返回集合中的所有成员
SMEMBERS myset  # 输出: 1) "Hello"  2) "World"

# 判断元素是否是集合的成员
SISMEMBER myset "Hello"  # 输出: 1
SISMEMBER myset "Redis"  # 输出: 0

# 返回集合中元素的数量
SCARD myset  # 输出: 2

# 随机返回集合中的一个或多个元素
SRANDMEMBER myset  # 输出: 随机一个元素
SRANDMEMBER myset 2  # 输出: 随机两个元素

# 随机移除并返回集合中的一个元素
SPOP myset  # 输出: 随机一个元素

# 将集合中的元素移动到另一个集合
SADD myset1 "one"
SADD myset2 "two"
SMOVE myset1 myset2 "one"
SMEMBERS myset2  # 输出: 1) "two"  2) "one"

# 返回所有给定集合的并集
SADD myset1 "a"
SADD myset1 "b"
SADD myset2 "b"
SADD myset2 "c"
SUNION myset1 myset2  # 输出: 1) "a"  2) "b"  3) "c"

# 返回所有给定集合的交集
SINTER myset1 myset2  # 输出: 1) "b"

# 返回所有给定集合的差集
SDIFF myset1 myset2  # 输出: 1) "a"

# 将所有给定集合的并集存储在指定的集合中
SUNIONSTORE resultset myset1 myset2
SMEMBERS resultset  # 输出: 1) "a"  2) "b"  3) "c"

# 将所有给定集合的交集存储在指定的集合中
SINTERSTORE resultset myset1 myset2
SMEMBERS resultset  # 输出: 1) "b"

# 将所有给定集合的差集存储在指定的集合中
SDIFFSTORE resultset myset1 myset2
SMEMBERS resultset  # 输出: 1) "a"

注意事项

  1. 无序性:集合是无序的,元素的返回顺序可能与插入顺序不同。
  2. 唯一性:集合中的元素是唯一的,重复添加相同的元素不会增加集合的大小。
  3. 操作的原子性:所有集合操作都是原子的,确保数据的一致性。

总结

Redis 的集合类型命令非常丰富,支持多种操作,如添加、删除、查询、移动、集合运算等。通过这些命令,你可以对 Redis 中的集合类型数据进行灵活的操作和管理。上述示例代码涵盖了大多数常用的集合命令,帮助你快速掌握 Redis 集合类型的操作。

相关推荐
想用offer打牌4 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
KYGALYX6 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了6 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法6 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
Moment7 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
Cobyte8 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc
程序员侠客行8 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
Honmaple9 小时前
QMD (Quarto Markdown) 搭建与使用指南
后端
PP东9 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
invicinble9 小时前
springboot的核心实现机制原理
java·spring boot·后端