*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"
*常见错误
- 对非 Sorted Set 使用:返回 WRONGTYPE。
*最佳实践
- 排行榜淘汰:定期 ZPOPMAX 移除低分成员,保持排行榜规模可控。
- 高分优先队列:score 越大越优先,用 ZPOPMAX 实现。
*FAQ
Q: ZPOPMAX 和 BZPOPMAX 有什么区别? A: ZPOPMAX 立即返回,空集合返回空数组;BZPOPMAX 阻塞等待直到有元素或超时。