Skip to content

二、基本语法 ​

2.1 单 key 弹出 ​

bash
BRPOP key timeout
参数类型说明
keystring要弹出的列表名
timeoutint最大阻塞秒数,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