zoukankan      html  css  js  c++  java
  • Redis之PubSub

    【发布者订阅者模式】
      为了支持消息多播,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深度历险 核心原理与应用实践》

  • 相关阅读:
    python 实现redis订阅发布功能
    python装饰器实现对异常代码出现进行监控
    回首2017 展望2018
    结合jira搭建自动化测试平台
    安装YApi 接口管理平台
    Django 连接mysql数据库中文乱码
    在django admin中添加自定义视图
    django 模型models
    用户行为分析数据库设计
    vCenter Server 6 Standard
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/15717448.html
Copyright © 2011-2022 走看看