首页/数据/数据库速查/ZPOPMIN / ZPOPMAX 弹出极值(延时队列消费)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条
Redis 命令96 条
Redis 运维与场景124 条

ZPOPMIN / ZPOPMAX 弹出极值(延时队列消费)

弹出分数最小/最大的成员(可选 count);是「到期任务」与「榜单淘汰」的原子消费方式。

数据库速查数据更新于 2026-10-12

示例

示例
ZADD delay:jobs 1700000001 job1 1700000002 job2
ZPOPMIN delay:jobs          # 1700000001 job1(弹出最小分数)
ZPOPMAX delay:jobs 2        # 一次弹两个最大分
# 延时队列消费循环(到期即弹):
ZRANGEBYSCORE delay:jobs -inf $(date +%s) LIMIT 0 1
ZPOPMIN delay:jobs
返回成员与分数交替的数组
count一次弹多个(6.2+)
阻塞版BZPOPMIN/BZPOPMAX 等待元素出现
延时队列 = score 存到期时间戳,ZPOPMIN 弹到期的;多消费者竞争需要 Lua 保证「判断+弹出」原子。

易错点

  • POP 前不检查分数是否到期:没到期的任务被提前弹走
  • 多消费者直接 ZPOPMIN:任务被弹走后处理失败即丢失,需备份列表或 Stream 确认机制

数据来源与参考

  • Redis 官方文档: ZPOPMIN
  • Redis 官方文档: BZPOPMIN

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌