*Redis SREM 命令
移除 Set 中的一个或多个成员。
*语法
SREM key member [member ...]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | Set 的键名 |
| member | String | 是 | 要移除的成员,可一次移除多个 |
*返回值
| 条件 | 返回值 |
|---|---|
| 成功移除的成员数量 | 整数 |
| 成员不存在 | 不计入 |
| key 不存在 | 0 |
*时间复杂度
O(1)(单个 member),O(N)(N 个 member)
*示例
> SADD tags redis database cache nosql
(integer) 4
> SREM tags cache
(integer) 1
# 移除多个
> SREM tags database nosql
(integer) 2
# 移除不存在的成员
> SREM tags java
(integer) 0
> SMEMBERS tags
1) "redis"
*常见错误
- key 不存在:返回 0,不报错。
- 对非 Set 类型使用:返回 WRONGTYPE。
*最佳实践
*FAQ
Q: SREM 会删除 key 吗? A: 当 Set 最后一个成员被移除后,key 自动删除。
Q: 如何清空整个 Set?
A: DEL key 或 SPOP key count 全部弹出。大 Set 用 SSCAN + SREM 分批清理。