Redis的订阅与发布
Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。
作为例子, 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
?当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
?上面描述了订阅与发布的关系。
现在我们使用几个客户端来模拟一下redis的订阅与发布
客户端一:
客户端二:
客户端三:
?现在看一下每一个订阅者受到的消息:
订阅者返回的数据说明:
redis 127.0.0.1:6379> SUBSCRIBE tv Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "tv" 3) (integer) 1
?命令:subscribe tv 表示订阅了tv这个频道。
返回的三行记录表示:表示当前客户端成功地订阅了信息第二个元素所指示的频道。而信息的第三个元素则记录了目前客户端已订阅频道的总数。
发布消息后,订阅者接收消息
redis 127.0.0.1:6379> SUBSCRIBE tv Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "tv" 3) (integer) 1 1) "message" 2) "tv" 3) "haier"
?接收消息的三行记录的含义:表示这条信息是由某个客户端执行 PUBLISH 命令所发送的, 真正的信息。 信息的第二个元素是信息来源的频道, 而第三个元素则是信息的内容。