开发者学堂课程【Redis 入门到精通(基础篇):数据类型-list 阻塞数据获取】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/764/detail/13381
数据类型-list 阻塞数据获取
List类型数据扩展操作
规定时间内获取并移除数据
Blpop key1 [key2] timeout
Brpop key1 [key2] timeout
看了 list 的七个基本操作,我们这里再介绍两个扩展操作,叫做规定时间内获取并移除数据,
注意,这里使用的lpop跟rpop我们前面都见过,那么前面的字母b的意思是block,阻塞,这是lpop跟rpop对应的阻塞版本,我们看一个实验效果,打开进行添加,lpush list0 a b,然后进行取出,lpop list0,连续取两次,第三次取出时是无法取出的,nil,那么阻塞版本就是说现在这个列表里面没有,不意味着将来没有,那么就给出了一个可以等待,使用blpop list0 30,这时设定的是有一个30秒的等待时间,如果在这个时间里面有了,就取出,没有就停止,这个需要再开一个客户端,
在第二个客户端,输入lpush list0 c,然后在第一个客户端取出,此时取出一个c,如果再次重复,此时没有数据,blpop list0 5,最后结果就是nil,耗时5.05秒,再次执行blpop list0 10,回车后在第二个客户端快速键入一个lpush list0 d,然后在键入的一瞬间,第一客户端会出现取出的d,耗时4.70秒,在这个等待的过程,键入数据就马上取出,然后发现blpop key后面还有很多,
也就是说可以在多个列表中等待,得到数据后马上取出,然后得出数据,从哪取出等等,这就是一个任务的集合,一种任务队列,实现了任务的基础操作,这是blpop 对应的基本功能,那么对应的 rpop就不再说了,相似度非常高,把一些东西放到另外的里面,实质并不是特别重要的东西。