*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"
*常见错误
- timeout 遗忘:BRPOP 最后一个参数必须是 timeout。
*最佳实践
*FAQ
Q: BRPOP 和 BLPOP 有什么区别? A: BRPOP 弹出尾部元素;BLPOP 弹出头部元素。分别配合 LPUSH 和 RPUSH 实现 FIFO。