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存储运算结果
- 集合运算适合实现共同好友、推荐系统等功能
📝 发现内容有误?点击此处直接编辑