*Redis ZREM 命令

移除 Sorted Set 中的一个或多个成员。


*语法

ZREM key member [member ...]

*参数说明

参数 类型 必填 说明
key String Sorted Set 的键名
member String 要移除的成员,可一次移除多个

*返回值

条件 返回值
成功移除的成员数量 整数
member 不存在 不计入
key 不存在 0

*时间复杂度

O(M*log(N)),M 为移除成员数量,N 为 Sorted Set 成员数量。


*示例

> ZADD leaderboard 100 "p1" 200 "p2" 300 "p3"
(integer) 3

> ZREM leaderboard p2
(integer) 1

# 批量移除
> ZREM leaderboard p1 p3
(integer) 2

# 移除不存在的成员
> ZREM leaderboard p4
(integer) 0

> ZCARD leaderboard
(integer) 0

*常见错误

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

*最佳实践

  1. 排行榜淘汰:定期移除低分成员,保持排行榜长度可控。
  2. 批量移除:一次 ZREM 多个 member,减少网络往返。
  3. 范围移除:按 score 范围批量移除用 ZREMRANGEBYSCORE key min max

*FAQ

Q: ZREM 会删除 key 吗? A: 当 Sorted Set 最后一个 member 被移除后,key 自动删除。

Q: 如何按 score 范围移除? A: 使用 ZREMRANGEBYSCORE key min maxZREMRANGEBYRANK key start stop

Q: ZREM 和 SREM 有什么区别? A: ZREM 操作 Sorted Set,按 member 移除;SREM 操作 Set,按 member 移除。两者都不关心 score/顺序。