*Redis BRPOP 命令

阻塞式移除并返回 List 尾部元素。当 List 为空时阻塞等待。


*语法

BRPOP key [key ...] timeout

*参数说明

参数 类型 必填 说明
key String 一个或多个 List 键名
timeout Integer/Float 阻塞超时时间(秒),0 表示永久阻塞

*返回值

条件 返回值
成功弹出 数组 [key, element]
超时 nil

*时间复杂度

O(1)(List 非空时),阻塞期间不消耗 CPU。


*示例

# 客户端 A 阻塞等待
> BRPOP queue 30
# 阻塞中...

# 客户端 B 生产
> LPUSH queue "new_job"
(integer) 1

# 客户端 A 收到
1) "queue"
2) "new_job"

*常见错误

  1. timeout 遗忘:BRPOP 最后一个参数必须是 timeout。

*最佳实践

  1. FIFO 队列消费LPUSH + BRPOP 实现队列消费,与 BLPOP + RPUSH 对称。
  2. 超时设置:建议 5-30 秒,超时后重新 BRPOP。

*FAQ

Q: BRPOP 和 BLPOP 有什么区别? A: BRPOP 弹出尾部元素;BLPOP 弹出头部元素。分别配合 LPUSHRPUSH 实现 FIFO。