*Redis ZPOPMAX 命令

移除并返回 Sorted Set 中 score 最大的一个或多个成员。


*语法

ZPOPMAX key [count]

*参数说明

参数 类型 必填 说明
key String Sorted Set 键名
count Integer 弹出数量,默认 1(Redis 5.0+)

*返回值

条件 返回值
count=1(默认) [member, score] 数组或空数组
count>1 [member1, score1, member2, score2, ...] 数组
key 不存在或为空 空数组 []

*时间复杂度

O(log(N)*M),N 为成员数,M 为弹出数量。


*示例

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

> ZPOPMAX leaderboard
1) "p3"
2) "300"

> ZPOPMAX leaderboard 2
1) "p2"
2) "200"
3) "p1"
4) "100"

*常见错误

  1. 对非 Sorted Set 使用:返回 WRONGTYPE。

*最佳实践

  1. 排行榜淘汰:定期 ZPOPMAX 移除低分成员,保持排行榜规模可控。
  2. 高分优先队列:score 越大越优先,用 ZPOPMAX 实现。

*FAQ

Q: ZPOPMAX 和 BZPOPMAX 有什么区别? A: ZPOPMAX 立即返回,空集合返回空数组;BZPOPMAX 阻塞等待直到有元素或超时。