您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
Redis Brpop 命令
发布时间:2021-10-31 21:14:55编辑:雪饮阅读()
Redis Brpop 命令移出并获取列表的最后一个元素。
以100秒超时来移出并获取列表的最后一个元素:
127.0.0.1:6379> lpush list1 element1 element2 element3 element4 element5
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "element5"
2) "element4"
3) "element3"
4) "element2"
5) "element1"
127.0.0.1:6379> brpop list1 100
1) "list1"
2) "element1"
如果列表没有元素会阻塞列表直到等待超时
127.0.0.1:6379> brpop list1 5
1) "list1"
2) "element2"
127.0.0.1:6379> brpop list1 5
1) "list1"
2) "element3"
127.0.0.1:6379> brpop list1 5
1) "list1"
2) "element4"
127.0.0.1:6379> brpop list1 5
1) "list1"
2) "element5"
127.0.0.1:6379> brpop list1 5
(nil)
(5.02s)
如果列表没有元素会阻塞列表直到发现可弹出元素为止。
127.0.0.1:6379> brpop list1 1000
然后另外开一个会话lpush一个
[root@localhost ~]# /usr/local/redis-6.2.5/src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> lpush list1 element1
(integer) 1
然后第一个会话就有响应了
127.0.0.1:6379> brpop list1 1000
1) "list1"
2) "element1"
(2.93s)
基于以上,总结返回值:
返回值
假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
del命令可以用来删除list,无论是lpush或者rpush所产生的list
127.0.0.1:6379> lpush list2 element1 element2
(integer) 2
127.0.0.1:6379> rpush list3 element1 element2
(integer) 2
127.0.0.1:6379> keys *
1) "list3"
2) "list2"
127.0.0.1:6379> del list2 list3
(integer) 2
127.0.0.1:6379> keys *
(empty array)
del是可以一次性删除多个key的
rpush与lpush正好相反,是每次push到list的末尾的:
127.0.0.1:6379> rpush list5 element1 element2
(integer) 2
127.0.0.1:6379> lrange list5 0 -1
1) "element1"
2) "element2"
127.0.0.1:6379> lpush list6 element1 element2
(integer) 2
127.0.0.1:6379> lrange list6 0 -1
1) "element2"
2) "element1"
虽然brpop好像是可以同时给多个key进行brpop操作,但是貌似只有第一个key能生效:
127.0.0.1:6379> lpush list1 element1 element2
(integer) 2
127.0.0.1:6379> lpush list2 element1 element2
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "element2"
2) "element1"
127.0.0.1:6379> lrange list2 0 -1
1) "element2"
2) "element1"
127.0.0.1:6379> brpop list1 list2 10
1) "list1"
2) "element1"
127.0.0.1:6379> lrange list1 0 -1
1) "element2"
127.0.0.1:6379> lrange list2 0 -1
1) "element2"
2) "element1"
哦,不,对于brpop接收多个key进行brpop时候则是按照接收key的顺序来进行pop的,比如接收顺序是先key1,则先将key1中的pop完成后再pop进行key2的:
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> lpush key1 ele1 ele2
(integer) 2
127.0.0.1:6379> lpush key2 ele1 ele2
(integer) 2
127.0.0.1:6379> lrange key1 0 -1
1) "ele2"
2) "ele1"
127.0.0.1:6379> lrange key2 0 -1
1) "ele2"
2) "ele1"
127.0.0.1:6379> brpop key1 key2 10
1) "key1"
2) "ele1"
127.0.0.1:6379> brpop key1 key2 10
1) "key1"
2) "ele2"
127.0.0.1:6379> brpop key1 key2 10
1) "key2"
2) "ele1"
127.0.0.1:6379> brpop key1 key2 10
1) "key2"
2) "ele2"
127.0.0.1:6379> brpop key1 key2 10
(nil)
(10.01s)
调换下key接收的顺序:
127.0.0.1:6379> lpush key1 ele1 ele2
(integer) 2
127.0.0.1:6379> lpush key2 ele1 ele2
(integer) 2
127.0.0.1:6379> lrange key1 0 -1
1) "ele2"
2) "ele1"
127.0.0.1:6379> lrange key2 0 -1
1) "ele2"
2) "ele1"
127.0.0.1:6379> brpop key2 key1 10
1) "key2"
2) "ele1"
127.0.0.1:6379> brpop key2 key1 10
1) "key2"
2) "ele2"
127.0.0.1:6379> brpop key2 key1 10
1) "key1"
2) "ele1"
127.0.0.1:6379> brpop key2 key1 10
1) "key1"
2) "ele2"
127.0.0.1:6379> brpop key2 key1 10
(nil)
(10.02s)
关键字词:Redis,Brpop
上一篇:Redis Blpop 命令