*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