ZREMRANGEBYRANK:移除指定排名范围内的成员

ZREMRANGEBYRANK 命令可以从升序排列的有序集合中移除位于指定排名范围内的成员,然后返回被移除成员的数量:

ZREMRANGEBYRANK sorted_set start end

与 Redis 的其他很多范围型命令一样,ZREMRANGEBYRANK 命令接受的也是一个闭区间范围,也就是说,排名为 start 和 end 的成员也将被移除。

作为例子,以下代码展示了如何移除 salary 有序集合中升序排名 0~3 位的 4 个成员:

redis> ZREMRANGEBYRANK salary 0 3
(integer) 4 -- 这个命令移除了4个成员

图6-22展示了 ZREMRANGEBYRANK 命令执行前后,salary 有序集合发生的变化。

image 2025 01 03 20 15 04 369
Figure 1. 图6-22 salary有序集合的变化

使用负数排名

传给 ZREMRANGEBYRANK 命令的排名参数除了可以是正数之外还可以是负数。

举个例子,假如我们需要从 salary 有序集合中移除排名倒数前 3 位的成员,那么只需要执行以下命令即可:

ZREMRANGEBYRANK salary -3 -1

其它信息

  • 复杂度:O(log(N)+M),其中 N 为有序集合包含的成员数量,M 为被移除的成员数量。

  • 版本要求:ZREMRANGEBYRANK 命令从 Redis 2.0.0 版本开始可用。