Redis Pub/Sub模式的主要缺点 消息可靠性无法保障 具体表现:Redis的Pub/Sub模式不会对消息进行持久化。如果订阅者在消息发布时未连接到Redis服务器,它们将无法接收到这些消息。这意味着在订阅者断开连接或重新启动期间发布的消息可能会丢失。 可能带来的问题:对于需要确保消息传递可靠性的应用程序,这种消息丢失可能导致...
2.没有ack机制; redis pub/sub是一个要即时消费的MQ,如果消费晚了,数据就会丢失。因此在使用redis pub/sub作为MQ的时候,我们通常要用一个线程轮询去sub,丢到内存队列中等待处理线程去处理,这带来了消费者服务资源不必要的损耗。 可能是为了解决这些问题吧,redis5.0增加一个新的数据类型Streams,这个数据类型的特点...
多频道支持:可以同时订阅多个频道,允许订阅者接收来自不同频道的消息。 缺点: 消息丢失:如果在发布消息时没有任何订阅者在线,消息将被丢弃,无法持久化。这意味着在网络故障或 Redis 宕机时,消息会丢失。 缺乏确认机制:Pub/Sub 模式没有消息确认机制,无法保证消息是否被成功接收和处理。这可能导致消费者在处理消息时...
消息不能持久化 因为PubSub的消息并非是Redis的一种数据类型,所以PubSub中数据是没有得到aof等持久化机制的支持的,既一旦节点崩溃,重新上线后,消息是会丢失的。这一点在Redis 5.0的Stream新数据结构中得到了改善 也正因为PubSub模块的这些缺点,在严谨的消息队列领域,Redis的PubSub模型上不了主舞台,只能做一下简单...
1.Pub/Sub Pub/Sub模式的缺点: 消息的发布是无状态的,无法保证可达。对于发布者来说,消息是“即发即失”的。 此时如果某个消费者在生产者发布消息时下线,重新上线之后, 是无法接收该消息的,要解决该问题需要使用专业的消息队列,如 Kafka … 此处不再赘述。
如果当前没有消息,get\_message 会返回空,告知当前没有消息,所以它不是阻塞的。Redis PubSub 的生产者和消费者是不同的连接,也就是上面这个例子实际上使用了两个Redis 的连接。这是必须的,因为 Redis 不允许连接在 subscribe 等待消息时还要进行其它的操作。
Pub/Sub 常用命令: 2.3 Streams 实现消息队列 Redis 发布订阅 (pub/sub) 有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。而且也没有 Ack 机制来保证数据的可靠性,假设一个消费者都没有,那消息就直接被丢弃了。 后来Redis 的父亲 Antirez,又单独开启了一个叫 Disque 的项目来完善...
不持久化消息: 如果Redis 停机重启,PubSub 的消息是不会持久化的,毕竟 Redis 宕机就相当于一个消费者都没有,所有的消息都会被直接丢弃。 基于上述缺点,Redis 的作者甚至单独开启了一个 Disque 的项目来专门用来做多播消息队列,不过该项目目前好像都没有成熟。不过后来在 2018 年 6 月,Redis 5.0 新增了 Stream ...