Redis BRPOP key [key ...] timeout

本文介绍了 Redis 中 BRPOP 命令的使用方法及其时间复杂度 O(1)。BRPOP 是 RPOP 的阻塞版本,在指定的 key 对应 list 为空时将阻塞客户端直到有元素可弹出。文章通过示例展示了如何使用 BRPOP 从 list 尾部弹出元素。

BRPOP 是一个阻塞的列表弹出原语。 它是 RPOP 的阻塞版本,因为这个命令会在给定list无法弹出任何元素的时候阻塞连接。 该命令会按照给出的 key 顺序查看 list,并在找到的第一个非空 list 的尾部弹出一个元素。

请在 BLPOP 文档 中查看该命令的准确语义,因为 BRPOP 和 BLPOP 基本是完全一样的,除了它们一个是从尾部弹出元素,而另一个是从头部弹出元素。

返回值

多批量回复: 具体来说:

  • 当没有元素可以被弹出时返回一个 nil 的多批量值,并且 timeout 过期。
  • 当有元素弹出时会返回一个双元素的多批量值,其中第一个元素是弹出元素的 key,第二个元素是 value。

例子:

redis> DEL list1 list2
(integer) 0
redis> RPUSH list1 a b c
(integer) 3
redis> BRPOP list1 list2 0
1) "list1"
2) "c"
# sudo journalctl -u redis.service -- Logs begin at 一 2025-10-13 11:01:44 CST, end at 一 2025-10-13 16:27:13 CST. -- 10月 13 14:51:45 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 14:53:15 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 14:53:15 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. 10月 13 14:53:15 localhost.localdomain systemd[1]: Unit redis.service entered failed state. 10月 13 14:53:15 localhost.localdomain systemd[1]: redis.service failed. 10月 13 14:56:33 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 14:58:03 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 14:58:03 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. 10月 13 14:58:03 localhost.localdomain systemd[1]: Unit redis.service entered failed state. 10月 13 14:58:03 localhost.localdomain systemd[1]: redis.service failed. 10月 13 15:00:32 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 15:02:02 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 15:02:02 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. 10月 13 15:02:02 localhost.localdomain systemd[1]: Unit redis.service entered failed state. 10月 13 15:02:02 localhost.localdomain systemd[1]: redis.service failed. 10月 13 15:06:44 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 15:13:55 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 15:13:55 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. 10月 13 15:13:55 localhost.localdomain systemd[1]: Unit redis.service entered failed state. 10月 13 15:13:55 localhost.localdomain systemd[1]: redis.service failed. 10月 13 15:17:16 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 15:17:46 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 15:17:46 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. 10月 13 15:17:46 localhost.localdomain systemd[1]: Unit redis.service entered failed state. 10月 13 15:17:46 localhost.localdomain systemd[1]: redis.service failed. 10月 13 15:20:37 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 15:21:07 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 15:21:07 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. 10月 13 15:21:07 localhost.localdomain systemd[1]: Unit redis.service entered failed state. 10月 13 15:21:07 localhost.localdomain systemd[1]: redis.service failed. 10月 13 15:28:53 localhost.localdomain systemd[1]: Starting Redis persistent key-value database... 10月 13 15:29:23 localhost.localdomain systemd[1]: redis.service start operation timed out. Terminating. 10月 13 15:29:23 localhost.localdomain systemd[1]: Failed to start Redis persistent key-value database. lines 1-34
最新发布
10-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值