Redis(设计与实现):61---发布与订阅介绍

一、频道订阅(SUBSCRIBE、PUBLISH)

  • 通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端使用PUBLISH命令向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息

演示案例

  • 假设A、B、C三个客户端都执行了命令,那么这三个客户端就是"news.it"频道的订阅者,如下图所示:
SUBSCRIBE "news.it"

Redis(设计与实现):61---发布与订阅介绍_第1张图片

  • 如果这时某个客户端执行下面命令,向"news.it"频道发送消息"hello",那么"news.it"的三个订阅者都将收到这条消息,如下图所示:
PUBLISH "news.it" "hello"

Redis(设计与实现):61---发布与订阅介绍_第2张图片

二、模式订阅(PSUBSCRIBE)

  • 客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个模式,从 而成为这些模式的订阅者:每当有其他客户端向某个频道发送消息时,消息不仅会被发送给 这个频道的所有订阅者,它还会被发送给所有与这个频道相匹配的模式的订阅者

演示案例

  • 举个例子,假设如下图所示:
    • 客户端A正在订阅频道"news.it"。
    • 客户端B正在订阅频道"news.et"
    • 客户端C和客户端D正在订阅与"news.it"频道和"news.et"频道相匹配的模式"news.[ie]t"

Redis(设计与实现):61---发布与订阅介绍_第3张图片

  • 如果这时某个客户端执行PUBLISH命令,向"news.it"频道发送消息"hello",那么不仅正在订阅"news.it"频道的客户端A会收到消 息,客户端C和客户端D也同样会收到消息,因为这两个客户端正在订阅匹配"news.it"频道 的"news.[ie]t"模式,如下图所示:
PUBLISH "news.it" "hello"

Redis(设计与实现):61---发布与订阅介绍_第4张图片

  • 与此类似,如果某个客户端执行下面的命令,向"news.et"频道发送消息"world",那么不仅正在订阅"news.et"频道的客户端B会收到消 息,客户端C和客户端D也同样会收到消息,因为这两个客户端正在订阅匹配"news.et"频道 的"news.[ie]t"模式,如下图所示:
PUBLISH "news.et" "world"

Redis(设计与实现):61---发布与订阅介绍_第5张图片

你可能感兴趣的:(Redis(设计与实现),发布与订阅)