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"
注意事项
- 无序性:集合是无序的,元素的返回顺序可能与插入顺序不同。
- 唯一性:集合中的元素是唯一的,重复添加相同的元素不会增加集合的大小。
- 操作的原子性:所有集合操作都是原子的,确保数据的一致性。
总结
Redis 的集合类型命令非常丰富,支持多种操作,如添加、删除、查询、移动、集合运算等。通过这些命令,你可以对 Redis 中的集合类型数据进行灵活的操作和管理。上述示例代码涵盖了大多数常用的集合命令,帮助你快速掌握 Redis 集合类型的操作。