ZPOPMAX、ZPOPMIN:弹出分值最高和最低的成员

ZPOPMAX 和 ZPOPMIN 是 Redis 5.0 版本新添加的两个命令,分别用于移除并返回有序集合中分值最大和最小的 N 个元素:

ZPOPMAX sorted_set [count]
ZPOPMIN sorted_set [count]

其中被移除元素的数量可以通过可选的 count 参数来指定。如果用户没有显式地给定 count 参数,那么命令默认只会移除一个元素。

举个例子,对于图6-40 所示的有序集合来说,我们可以通过执行以下两个命令,分别移除有序集合中分值最大和最小的元素:

redis> ZPOPMAX salary
1) "mary" -- 被移除元素的成员
2) "5500" -- 被移除元素的分值
redis> ZPOPMIN salary
1) "peter"
2) "3500"

执行上述命令之后的 salary 有序集合如图6-41所示。

image 2025 01 03 21 03 10 914
Figure 1. 图6-40 存储薪水数据的salary有序集合
image 2025 01 03 21 03 27 474
Figure 2. 图6-41 弹出分值最大元素和分值最小元素之后的salary有序集合

其他信息

  • 复杂度:O(N),其中 N 为命令移除的元素数量。

  • 版本要求:ZPOPMAX 命令和 ZPOPMIN 命令从 Redis 5.0.0 版本开始可用。