Open yankj12 opened 5 years ago
查阅相关网页描述,redis可以作为轻量级消息队列来使用,如果业务要求比较高,建议使用专业的消息队列。 另,redis在4.2之后可能会有一个专门的消息队列模块加入。
生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息;即对于每个消息只能被最多一个消费者拥有
发布者生产消息放到队列里,多个监听队列的消费者都会收到同一份消息;即正常情况下每个消费者收到的消息应该都是一样的
Redis消息队列
网上所流传的方法是使用Redis中list的操作BLPOP或BRPOP,即列表的阻塞式(blocking)弹出。让我们来看看阻塞式弹出的使用方式:
BRPOP key [key ...] timeout 此命令的说明是: 1、当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止。 2、当给定多个key参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。 另外,BRPOP 除了弹出元素的位置和 BLPOP 不同之外,其他表现一致。
维护两个队列: pending队列和doing表(hash表)
使用Redis 实现消息队列 用redis来实现具有ack机制的消息队列 也可以参考这篇文章
Redis文章列表 有赞延迟队列设计 这篇文章是将消息队列的,没有使用redis Redis 和 I/O 多路复用 Redis集群实现原理探讨
理解并实现PubSub模式 前端方面的一个应用 浅析分布式下的事件驱动机制 PubSub 模式 浅析 Spring 中的事件驱动机制
概述
查阅相关网页描述,redis可以作为轻量级消息队列来使用,如果业务要求比较高,建议使用专业的消息队列。 另,redis在4.2之后可能会有一个专门的消息队列模块加入。
redis消息队列的实现
Redis消息队列
生产者消费者模式
生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息;即对于每个消息只能被最多一个消费者拥有
发布者订阅者模式
发布者生产消息放到队列里,多个监听队列的消费者都会收到同一份消息;即正常情况下每个消费者收到的消息应该都是一样的
参考
Redis消息队列
使用Redis 实现消息队列
实现即时生产消费
网上所流传的方法是使用Redis中list的操作BLPOP或BRPOP,即列表的阻塞式(blocking)弹出。让我们来看看阻塞式弹出的使用方式:
实现ack机制
维护两个队列: pending队列和doing表(hash表)
参考
使用Redis 实现消息队列 用redis来实现具有ack机制的消息队列 也可以参考这篇文章
参考资料
redis相关文章
Redis文章列表 有赞延迟队列设计 这篇文章是将消息队列的,没有使用redis Redis 和 I/O 多路复用 Redis集群实现原理探讨
PubSub相关文章
理解并实现PubSub模式 前端方面的一个应用 浅析分布式下的事件驱动机制 PubSub 模式 浅析 Spring 中的事件驱动机制