*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"

*常见错误

  1. key 不存在:返回 0,不报错。
  2. 对非 Set 类型使用:返回 WRONGTYPE。

*最佳实践

  1. 黑名单/白名单管理SADD 添加,SREM 移除,SISMEMBER 检查。
  2. 批量移除:一次 SREM 多个 member,减少 RTT。

*FAQ

Q: SREM 会删除 key 吗? A: 当 Set 最后一个成员被移除后,key 自动删除。

Q: 如何清空整个 Set? A: DEL keySPOP key count 全部弹出。大 Set 用 SSCAN + SREM 分批清理。