美文网首页
redis学习笔记(十一) 异步队列

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

作者: 云师兄 | 来源:发表于2019-09-25 15:01 被阅读0次

    1. 引子

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

    2. 生产者

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

    3. 消费者

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

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

    4. 发布/订阅模式

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

    发布/订阅模式指的是:

    • 发送者发送消息,订阅者接受消息,同一个主题的消息可能有多个消费者订阅。
    • 订阅者可以订阅任意数量的主题。

    订阅主题的命令为:subscribe topicName

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

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

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

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

    相关文章

      网友评论

          本文标题:redis学习笔记(十一) 异步队列

          本文链接:https://www.haomeiwen.com/subject/jytwuctx.html