ZREM:移除指定的成员

通过使用 ZREM 命令,用户可以从有序集合中移除指定的一个或多个成员以及与这些成员相关联的分值:

ZREM sorted_set member [member ...]

ZREM 命令会返回被移除成员的数量作为返回值。

举个例子,通过执行以下命令,我们可以移除 salary 有序集合中的成员 "peter":

redis> ZREM salary "peter"
(integer) 1 -- 移除了一个成员

执行以下命令将移除 salary 有序集合中的成员 "tom" 以及 "jack":

redis> ZREM salary "tom" "jack"
(integer) 2 -- 移除了两个成员

图6-8展示了 Redis 在执行以上两个 ZREM 命令调用时,salary 有序集合的变化过程。

image 2025 01 03 19 17 27 055
Figure 1. 图6-8 salary有序集合在执行ZREM命令时的变化过程

忽略不存在的成员

如果用户给定的某个成员并不存在于有序集合中,那么 ZREM 将自动忽略该成员。

比如,执行以下命令并不会导致 salary 集合中的任何成员被移除,因为这里给定的成员 "john"、"harry" 和 "lily" 都不存在于 salary 有序集合:

redis> ZREM salary "john" "harry" "lily"
(integer) 0 -- 没有任何成员被移除

其它信息

  • 复杂度:O(M*log(N)),其中 M 为给定成员的数量,N 为有序集合包含的成员数量。

  • 版本要求:ZREM 命令从 Redis 1.2.0 版本开始可用。Redis 2.4 版本以前的 ZREM 命令只允许用户给定一个成员,而 Redis 2.4 及以上版本的 ZREM 命令则允许用户给定一个或多个成员。