全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-12 6 分钟 ✍️ juanwangdev

Redis集合命令

集合(Set)是无序、不重复的字符串集合,适合存储标签、好友列表等需要去重的数据。

SADD添加元素

基本语法

Bash
SADD key member [member ...]

使用示例

Bash
# 添加单个元素
SADD tags "redis"

# 添加多个元素
SADD tags "database" "nosql" "cache"

# 添加重复元素(自动去重)
SADD tags "redis"
# 返回: 0(已存在,不重复添加)

SREM删除元素

基本语法

Bash
SREM key member [member ...]

使用示例

Bash
# 删除单个元素
SREM tags "cache"

# 删除多个元素
SREM tags "redis" "database"

# 删除不存在的元素
SREM tags "notexist"
# 返回: 0

SMEMBERS获取所有元素

基本语法

Bash
SMEMBERS key

使用示例

Bash
SADD users "alice" "bob" "carol"

SMEMBERS users
# 返回: "alice", "bob", "carol"(顺序不确定)

SMEMBERS返回所有元素,大量数据时慎用,考虑用SSCAN。

SISMEMBER检查元素存在

基本语法

Bash
SISMEMBER key member

使用示例

Bash
SISMEMBER users "alice"
# 返回: 1(存在)

SISMEMBER users "david"
# 返回: 0(不存在)

SCARD获取集合大小

基本语法

Bash
SCARD key

使用示例

Bash
SCARD users
# 返回: 3

# 不存在的集合
SCARD notexist
# 返回: 0

SPOP随机弹出元素

基本语法

Bash
SPOP key [count]

使用示例

Bash
SADD lottery "user1" "user2" "user3" "user4" "user5"

# 随机弹出1个元素
SPOP lottery
# 返回: "user3"(随机)

# 随机弹出多个元素
SPOP lottery 2
# 返回: "user1", "user5"

SPOP适合实现随机抽奖功能。

SRANDMEMBER随机获取元素

基本语法

Bash
SRANDMEMBER key [count]

使用示例

Bash
SADD colors "red" "green" "blue" "yellow"

# 随机获取1个元素(不移除)
SRANDMEMBER colors
# 返回: "blue"

# 随机获取多个元素(可重复)
SRANDMEMBER colors 3
# 返回: "red", "blue", "red"

# 随机获取多个元素(不重复)
SRANDMEMBER colors -3
# 返回: "green", "yellow", "red"

正数count可能重复,负数count不重复。

SMOVE移动元素

基本语法

Bash
SMOVE source destination member

使用示例

Bash
SADD set1 "a" "b" "c"
SADD set2 "x" "y"

# 将"a"从set1移动到set2
SMOVE set1 set2 "a"
# 返回: 1(成功)

SMEMBERS set1  # ["b", "c"]
SMEMBERS set2  # ["x", "y", "a"]

集合运算

交集SINTER

Bash
SADD set1 "a" "b" "c"
SADD set2 "b" "c" "d"
SADD set3 "c" "d" "e"

# 多个集合的交集
SINTER set1 set2 set3
# 返回: "c"

# 存储交集结果
SINTERSTORE result set1 set2

并集SUNION

Bash
# 多个集合的并集
SUNION set1 set2
# 返回: "a", "b", "c", "d"

# 存储并集结果
SUNIONSTORE result set1 set2

差集SDIFF

Bash
# set1相对于set2的差集
SDIFF set1 set2
# 返回: "a"(在set1但不在set2)

# 存储差集结果
SDIFFSTORE result set1 set2

SSCAN迭代遍历

基本语法

Bash
SSCAN key cursor [MATCH pattern] [COUNT count]

使用示例

Bash
# 遍历所有元素
SSCAN myset 0

# 匹配特定模式
SSCAN myset 0 MATCH user*

SSCAN适合遍历大集合,避免阻塞。

常用命令速查表

命令说明示例
SADD添加元素SADD k m1 m2
SREM删除元素SREM k m
SMEMBERS获取所有SMEMBERS k
SISMEMBER检查存在SISMEMBER k m
SCARD集合大小SCARD k
SPOP随机弹出SPOP k
SRANDMEMBER随机获取SRANDMEMBER k
SMOVE移动元素SMOVE src dest m
SINTER交集SINTER k1 k2
SUNION并集SUNION k1 k2
SDIFF差集SDIFF k1 k2
SSCAN遍历SSCAN k 0

要点总结

  • 集合自动去重,添加重复元素返回0
  • SMEMBERS获取所有元素,大量数据用SSCAN
  • SISMEMBER检查元素存在,返回1或0
  • SPOP弹出并移除,SRANDMEMBER只获取不移除
  • SINTER交集、SUNION并集、SDIFF差集
  • SINTERSTORE/SUNIONSTORE/SDIFFSTORE存储运算结果
  • 集合运算适合实现共同好友、推荐系统等功能

📝 发现内容有误?点击此处直接编辑

← 上一篇 Redis键管理命令
下一篇 → HyperLogLog
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库