zoukankan      html  css  js  c++  java
  • Redis 发布与订阅

    参考:黄健宏 著. Redis设计与实现 (数据库技术丛书) . 机械工业出版社. Kindle 版本.

    Redis的发布与订阅功能由 PUBLISH、 SUBSCRIBE、 PSUBSCRIBE 等命令组成。 通过执行 SUBSCRIBE 命令, 客户端可以订阅一个或多个频道, 从而成为这些频道的订阅者( subscriber)

    除了订阅频道之外, 客户端还可以通过执行 PSUBSCRIBE 命令订阅一个或多个模式, 从而成为这些模式的订阅者.


    一、频道的订阅与退订

    Redis 将所有频道的订阅关系都保存在服务器状态的 pubsub_ channels 字典里面, 这个字典的键是某个被订阅的频道, 而键的值则是一个链表, 链表里面记录了所有订阅这个频道的客户端:

    订阅频道: SUBSCRIBE "example.sport"

    退订频道: UNSUBSCRIBE "example.sport"


    二、模式的订阅与退订

    与频道的订阅类似, 服务器将所有模式的订阅关系都保存在服务器状态的 pubsub_ patterns 属性里面:

    模式订阅: PSUBSCRIBE “example.*”

    模式退订: PUNSUBSCRIBE "example.*"

     


     三、发送消息

    当一个 Redis 客户端执行 PUBLISH< channel>< message> 命令将消息 message 发送给频道 channel 的时候, 服务器需要执行以下两个动作:

    1) 将消息 message 发送给 channel 频道的所有订阅者。

    2) 如果有一个或多个模式 pattern 与频道 channel 相匹配, 那么将消息 message 发送给 pattern 模式的订阅者。

    PUBLISH 命令通过访问 pubsub_ channels 字典来向频道的所有订阅者发送消息, 通过访问 pubsub_ patterns 链表来向所有匹配频道的模式的订阅者发送消息。


    四、查看订阅信息

    PUBSUB 命令是 Redis 2. 8 新增加的命令之一, 客户端可以通过这个命令来查看频道或者模式的相关信息, 比如某个频道目前有多少订阅者, 又或者某个模式目前有多少订阅者, 诸如此类。

    PUBSUB subcommand [argument [argument ...]]

     

    1. PUBSUB CHANNELS [pattern] 

    当没有 pattern 参数时,返回当前服务器被订阅的所有频道。 

    如果给定 pattern 参数,返回服务器当前被订阅的频道中那些与 pattern 模式相匹配的频道。ex: PUBSUB CHANNELS "news.*"  |  PUBSUB CHANNELS "news.[ie]t"

     

    2. PUBSUB NUMSUB[ channel- 1 channel- 2... channel- n]

    该子命令接受任意多个频道作为输入参数, 并返回这些频道的订阅者数量。

    3. PUBSUB NUMPAT

    该子命令用于返回服务器当前被订阅模式的数量。

    PUBSUB 命令的三个子命令都是通过读取 pubsub_ channels 字典和 pubsub_ patterns 链表中的信息来实现的。 


  • 相关阅读:
    Beans
    Redis记录-Redis命令
    Redis记录-Redis介绍
    RESTful记录-RESTful服务
    RESTful记录-RESTful内容
    RESTful记录-RESTful介绍
    HTTP记录-HTTP介绍
    Solr记录-solr检索和查询数据
    Solr记录-solr文档xml
    Solr记录-solr内核与索引
  • 原文地址:https://www.cnblogs.com/yangqi7/p/6844795.html
Copyright © 2011-2022 走看看