*Redis ZPOPMIN 命令

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


*语法

ZPOPMIN 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 queue 100 "task1" 200 "task2" 300 "task3"
(integer) 3

> ZPOPMIN queue
1) "task1"
2) "100"

> ZPOPMIN queue 2
1) "task2"
2) "200"
3) "task3"
4) "300"

*常见错误

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

*最佳实践

  1. 优先级队列:ZPOPMIN 实现最小堆/优先级队列,score 小的优先弹出。
  2. 延迟队列:score 为执行时间戳,定时任务用 ZPOPMIN 弹出已到期的任务。

*FAQ

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

Q: ZPOPMIN 会删除 key 吗? A: 当 Sorted Set 最后一个 member 被弹出后,key 自动删除。