• Redis(四)Pub/Sub


    发布与订阅

    Pub/Sub模式应该非常熟悉,在现实应用中被广泛的使用。如:微博中关注某个号,这个号有发新博时,关注的都会收到;github上watch了某个项目,当有issue时,就会发邮件。

    Redis是支持发布与订阅的,当然大多数场景中可以使用MQ达到同样的效果。

    Redis中支持的发布与订阅

    Redis中是以订阅某个或者多个频道Channel,表示其感兴趣的内容。当有发布者向频道Channel中发布消息时,订阅者就可以收到其感兴趣的消息。订阅者和发布者之间去耦合

    Redis通过三个命令Subscribe/UnSubscribe/Publish三者完成订阅与发布。

    • Subscribe订阅某个或者多个频道Channel
    • UnSubscribe取消订阅
    • Publish向某个频道发布消息

    1.订阅单个频道

    subscribe foo

    2.订阅多个频道

    subscribe foo bar

    3.模式订阅

    psubscribe foo.*

    4.发布消息

    publish foo message

    5.取消订阅

    unsubscribe foo

    Redis发布订阅的格式

    订阅时、取消订阅时、收到的订阅的消息都响应都将以数组的形式体现,如:

    127.0.0.1:6379> subscribe foo
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "foo"
    3) (integer) 1
    
    
    
    1) "message"
    2) "foo"
    3) "m1"
    
    • 第一元素表示操作类型:订阅、取消订阅、消息
    • 第二个元素表示订阅的频道、收到哪个频道的消息
    • 第三个元素表示订阅了第几个频道、承载的消息体

    Redis的发布订阅作用域

    • Redis的发布订阅与与键空间是独立的,对键空间没有任和影响;
    • Redis中的模式订阅,将订阅模式匹配上的所有频道;
    • 只支持对订阅后的发布的消息获取,不支持获取订阅前发布的消息将;

    对于java版本的jedis操作发布订阅可查看PublishSubscribeCommandsTest.java

    应用场景

    对于不可靠的、轻量级消息传递型的发布与订阅可以考虑使用,因为比较轻量级易于使用。但是大多数发布订阅还是使用MQ比较合适。

    参考

    Pub/Sub

  • 相关阅读:
    将自己的web应用发布到Tomcat
    JavaEE复制后项目出错或者无法运行的解决方法
    Java中eq、ne、ge、gt、le、lt的含义
    Spring中声明式事务处理和编程式事务处理的区别
    Java中获取当前时间并格式化
    Computer Vision Resources
    从信息论到哈弗曼树
    二 图像处理opencv mfc学习
    OpenMP的学习
    图像处理的学习
  • 原文地址:https://www.cnblogs.com/lxyit/p/9828814.html
Copyright © 2020-2023  润新知