Pub/Sub 机制

Pub/Sub

Redis 也支持消息的发布订阅模式,订阅者(Sub)通过SUBSCRIBE 命令和PSUBSCRIBE命令向redis 服务订阅频道(channel),当发布者通过PUBLISH 命令向chinnel发布命令时,订阅该频道的客户端都会受到此消息。

PUB/SUB 机制

三个客户端都订阅channel1频道

订阅

当有新消息通过PUBLISH命令发布到channel1时,这个消息会被发送给订阅这个频道的客户端。
这里写图片描述

redis-cli 使用PUB/SUB

普通的pub/sub

启动一个客户端订阅频道:
这里写图片描述

使用SUBSCRIBE 命令订阅了两个频道,cxsj 、huoyuner 这两个参数代表着频道的名称。 通过上图我们可以看出这个命令输出了六行,分成了两组,每一组是一个Message,因为订阅、取消订阅、发布消息的操作都是通过message的方式进行发送,所以消息的第一个元素就是消息类型。它可以有:subscribe、ubsubscribe、publish 等类型。

启动另一个客户端发送消息:
这里写图片描述

往cxsj 频道里发布了一条“new movies”的消息,下面我们再看订阅端:
这里写图片描述

可以看到这条消息已经被订阅者给接收到了,收到的消息中,第一个参数类型是”message”,第二个参数“cxsj”是频道的名称。第三个参数“new movies”是消息的内容。

通配符的pub/sub

redis 还支持通配符的订阅和发布,客户端可以订阅一个或多个规则的频道。 下面我们用PSUBSCRIBE 来订阅c* 的频道。

这里写图片描述

接下来我们发送一条消息到cxsj这个频道里,此时,两个订阅者都能接收到消息。

这里写图片描述

注意:订阅者2是通过通配符订阅的,所以它的消息类型显示的是pmessage。 另外我们在操作实例的时候,发现当redis-cli 端执行的SUBSCRIBE或是PSUBSCRIBE的时候,是不能响应其他命令的,这也就说明了Redis的发布订阅模式,订阅者需要独占一个连接。

猜你喜欢

转载自blog.csdn.net/huo_yun/article/details/52126709