*Redis SREM 命令 从集合中移除一个或多个成员

*语法

SREM key member [member ...]

*说明

从存储在 key 的集合中移除一个或多个指定的 member 成员。

特性

  • 如果成员不存在于集合中,则被忽略,不会报错
  • 如果所有指定成员都不存在,返回 0
  • 如果 key 不存在,被视为空集合,返回 0
  • 如果 key 不是集合类型,返回类型错误

从 Redis 2.4 开始支持一次移除多个成员。

*返回值

  • Integer:实际从集合中移除的成员数量(不包括不存在的成员)

*时间复杂度

  • O(N),其中 N 是要移除的成员数量。

*版本兼容性

Redis 版本 变更说明
>= 1.0.0 初始支持,单成员移除
>= 2.4.0 支持一次移除多个成员

*示例

*示例 1:移除单个成员

redis-cli SADD myset "one" "two" "three"
redis-cli SREM myset "one"
# 返回:(integer) 1

redis-cli SREM myset "four"
# 返回:(integer) 0 (four 不存在,被忽略)

*示例 2:批量移除多个成员

redis-cli SADD colors "red" "green" "blue" "yellow"
redis-cli SREM colors "red" "blue" "purple"
# 返回:(integer) 2 (red 和 blue 被移除,purple 不存在被忽略)

redis-cli SMEMBERS colors

*示例 3:清理集合中的过期数据

# 模拟从集合中移除已失效的会话 ID
redis-cli SADD active_sessions "sess_001" "sess_002" "sess_003" "sess_004"

# 移除已知的失效会话
redis-cli SREM active_sessions "sess_001" "sess_003"

# 查看剩余活跃会话
redis-cli SMEMBERS active_sessions

*相关命令

  • SADD — 向集合添加成员
  • SMEMBERS — 返回集合中的所有成员
  • SCARD — 返回集合的成员数量
  • SPOP — 随机移除并返回集合成员