【发布者订阅者模式】
  为了支持消息多播,Redis 不能再依赖于那5种基本数据类型了,它单独使用了一个模块来支持消息多播,这个模块的名字叫作 PubSub,也就是 PublisherSubscriber(发布者/订阅者模式)。
【简单使用】
  subscribe可以根据主题进行订阅,多个消费端可以同时收到生产端发来的消息。但要注意,这个消费端只能做消费主题消息这件事,无法再进行其它操作。

下图是订阅多个主题的操作:

Redis也提供了Pattern的模式,可以订阅一类主题:

【缺点】
  PubSub 的生产者传递过来一个消息,Redis 会直接找到相应的消费者传递过去。如果一个消费者都没有,那么消息会被直接丢弃。如果开始有三个消费者,一个消费者突然挂掉了,生产者会继续发送消息,另外两个消费者可以持续收到消息,但是当挂掉的消费者重新连上的时候,在断连期间生产者发送的消息,对于这个消费者来说就是彻底丢失了。
  如果 Redis 停机重启,PubSub 的消息是不会持久化的,毕竟Redis宕机就相当于一个消费者都没有,所有的消息会被直接丢弃。正是因为PubSub有这些缺点,在消息队列的领域它几乎找不到合适的应用场景,目前比较流行的消息队列有Kafka,RabbitMQ,RocketMQ等。
  2018年6月,Redis 5.0新增了Stream数据结构,这个功能给Redis带来了持久化消息队列,虽然也有存储量方面的局限性,但是相比于PubSub来说,还是更进了一步。

【参考】

《Redis深度历险 核心原理与应用实践》

posted on 2021-12-21 22:14  长江同学  阅读(424)  评论(0编辑  收藏  举报