BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本,当指定列表 source 不为空时,BRPOPLPUSH 的表现和 RPOPLPUSH 一样。当列表 source 为空时,BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH 或 RPUSH 命令为止。
命令格式
BRPOPLPUSH source destination timeout
可用版本:2.2.0
时间复杂度:O(1)
命令参数
- source:弹出尾元素的指定列表 key。
- destination:插入头元素的指定列表 key。
- timeout:阻塞超时时间,单位为秒。
命令返回值
BRPOPLPUSH 命令返回有2种情况:
- 返回 nil,当指定的 source 列表为空且已经超时。
- 返回元素,当指定的 source 列表中存在可返回的元素时,返回改 source 的尾元素。
示例
redis> BRPOPLPUSH list1 list2 5
(nil)
(5.00s)
redis> LPUSH list1 "hello tool188"
(integer) 1
redis> BRPOPLPUSH list1 list2 5
"hello tool188"