redis异步队列

redis来做消息队列是用list数据类型。

rpush->在list的right面插入数据,
lpop->在list的left面弹出数据,

简单完成生产者和消费者这样的关系。

那这时候就个问题,lpop不会等待队列里有值的时候才消费。解决办法有两个。
第一个:在代码里写sleep,过段时间就lpop试试。
第二个:blpop方法。30秒以内有数据则pop出来,没数据就返回nil。


blpop.png

那这时候还有问题,生产者和消费者是一对一的关系,如何让生产者的消息供多个消费者消费呢?

用redis的主题订阅者模式:pub/sub。

订阅者(消费者)可以订阅(消费)任意数量的频道


subscribe.png

好,一对多的消息实现之后,那么其实这种实现还是缺点的。
pub/sub是无状态的,就是不知道是不是一定到达。对于发送者来说,消息发了就再也找不到了。
具体体现在哪儿呢?比如一个生产者发送消息的时候,某一个应该接收消息的消费者下线了,那么当消费者上线之后,是收不到那条消息的。

这时候怎么办?来专门的消息队列解决了。
rabbit MQ呀等等。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 众所周知,对于大多数公司来说,商业环境改变的速度比以往任何时候都快,这就需要人们和他们为之工作的组织随之做出改变。...
    中建华信阅读 5,096评论 0 0
  • 亲爱的孙子: 写这篇文章之前,爷爷本来想用“牙牙学语”这个标题来着,然而,写着写着就觉得不对劲了。为什么呢?你看了...
    二班班阅读 2,144评论 0 2
  • 会用EXCEL的,你会几种填充序号的方法? 在我没有进入OFFICE职场大学之前只会两种,第一种在第一行和第二行分...
    JossieYang阅读 5,846评论 0 0