消息传递:发布订阅模式详解

  1. Redis发布订阅简介

(1) 定义:Redis发布订阅(pub/sub)是一种消息通讯模式:发送者发送消息,订阅者接受信息

(2) 具体操作:RedisSUBSCRIBE命令可以让客户端订阅任意数量的频道,每当有新信息发送到被订阅的频道时,信息就会被发送给所有订阅指定频道的客户端

(3) 实例

下图展示了频道channel1,以及订阅该频道的客户端----client2client5client1之间的关系

 

 

 

当有新消息通过PUBLISH发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端:

 

 

 

  1. 发布/订阅使用

(1) 发布订阅模式

① 基于频道(channel)的发布/订阅

1) 发布/订阅模式包含两种角色,分别是发布者和订阅者。发布者可以向指定的频道发送消息;订阅者可以订阅一个或者多个频道,所有订阅此频道的订阅者都会收到此消息

2) 图示

 

 

 

② 基于模式(pattern)的发布/订阅

  1. 基于频道(channel)的发布/订阅是如何实现的?

(1) 底层是通过字典(图中的publish_channel)实现的,这个字典就用于保存订阅频道的信息:字典的键为正在被订阅的频道,而字典的值则是一个链表,链表中保存了所有订阅这个频道的客户端。

(2) 数据结构

① 实例:在下图展示的这个pubsub_channels的示例中,client2client5client1就订阅了channel1,而其他频道也被别的客户端所订阅

② 图示

 

 

 

(3) 订阅

posted @ 2021-05-27 13:30  IT特工  阅读(1608)  评论(0编辑  收藏  举报