BRPOPLPUSH source destination timeout

Redis BRPOPLPUSH 命令从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

BRPOPLPUSHRPOPLPUSH的阻塞版本,当给定列表 source 不为空时, BRPOPLPUSH的表现和 RPOPLPUSH 一样。

超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长(block indefinitely) 。

从 Redis 6.2.0 起,建议使用 BLMOVE 替代 BRPOPLPUSH 。 查看 RPOPLPUSH 了解更多。

*语法

redis BRPOPLPUSH 命令基本语法如下:

redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT 

非空列表: ``` redis> BRPOPLPUSH msg reciver 500 "hello moto" # 弹出元素的值 (3.38s) # 等待时长

redis> LLEN reciver (integer) 1

redis> LRANGE reciver 0 0 1) "hello moto" ```

空列表: redis> BRPOPLPUSH msg reciver 1 (nil) (1.34s)

*返回值

多行字符串: 要从 source 压入 destination 的元素。超时返回空。

*历史

  • >= 6.0: timeout 从整型变为 double 类型。

*模式:安全队列

参考 RPOPLPUSH命令的《安全队列》一节。

*模式:循环列表

参考 RPOPLPUSH 命令的《循环列表》一节。