redis学习笔记(十一) 异步队列

2019-09-25  本文已影响0人  云师兄

1. 引子

redis中有list数据类型,通过list可以实现生产者和消费者。

2. 生产者

使用rpush命令将消息从右边推入链表。

3. 消费者

使用lpop命令将消息从左边弹出链表。

但是如果list中没有消息时,lpop命令会直接返回空。如果想使用该命令的时候能阻塞一会呢?可以使用blpop命令,该命令可以设置阻塞时间,如果超过指定时间仍没有数据再返回空,如果有消息就可以马上返回。因此使用该命令更加及时。

4. 发布/订阅模式

前面的命令都是一个消息只能被一个生产者消费。

发布/订阅模式指的是:

订阅主题的命令为:subscribe topicName

发布消息的命令为:publish topicName "..."

这样如果有两个消费者都订阅了同一条消息,那么当有一个生产者发送一条消息到此topic下后,这两位消费者都会获取到该消息。

注意:使用redis的发布订阅不能保证消息一定到达消费者,有可能会出现消息丢失的情况。因为消费者执行subscribe命令后,就开始阻塞一直等待消息,如果消费者下线退出该命令后,有新的消息发送过来,消费者再上线是收不到该消息的。

所以建议使用专业的消息队列中间件。

上一篇下一篇

猜你喜欢

热点阅读