• 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

  • 相关阅读:
    C# .NET 支付宝IOT小程序AES密钥解密
    aws平台中为ec2实例添加双网卡
    Python使用lxml模块和Requests模块抓取HTML页面的教程
    CentOS下安装PHP Oracle数据库扩展
    如何在Ubuntu 16.04上安装配置Redis
    zabbix参考文档
    docker学习网站
    设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别
    MySql按字段分组取最大值记录 [此博文包含图片]
    dokcer使用--link 让容器相连
  • 原文地址:https://www.cnblogs.com/lxyit/p/9828814.html
Copyright © 2020-2023  润新知