主题
二、基本语法
2.1 单 key 弹出
bash
BRPOP key timeout| 参数 | 类型 | 说明 |
|---|---|---|
key | string | 要弹出的列表名 |
timeout | int | 最大阻塞秒数,0 = 永久阻塞 |
返回值:
bash
# 有元素时
1) "task:queue" # 列表名
2) "6" # 弹出的元素值
# 超时无元素
(nil)
# 超时为 0 时永久等待,直到有元素2.2 多 key 弹出(优先级队列)
bash
BRPOP key1 key2 key3 timeout这是 BRPOP 最强大的特性:同时监听多个列表,按 key 的声明顺序决定优先级。
bash
BRPOP task:queue:vip task:queue:normal 5等价于:"先查 VIP 队列,有就弹出;没有再查普通队列,有就弹出;都没有就阻塞等待,任意一个队列来新元素就立即弹出。"
2.3 Python 中的调用
python
# 单队列
result = redis_client.brpop("task:queue", timeout=5)
# result = (b"task:queue", b"6") 或 None
# 多队列(优先级)
result = redis_client.brpop(["task:queue:vip", "task:queue:normal"], timeout=5)
# result = (b"task:queue:vip", b"6") ← VIP 队列有元素
# result = (b"task:queue:normal", b"42") ← 只有普通队列有元素
# result = None ← 超时都没元素decode_responses=True 时返回字符串而非字节:
python
# decode_responses=True
result = redis_client.brpop("task:queue", timeout=5)
# result = ("task:queue", "6") 或 None