Redis教程(九) Redis发布与订阅
1 Redis发布与订阅
Redis 的发布与订阅功能可以让用户将消息同时发送给多个客户端。
概念:
发布者(publisher):发布消息的客户端。
频道(channel):构建在服务器内部,负责接收发布者发送的消息,并将消息转发给频道的订阅者。
模式(pattern):构建在服务器内部,负责对频道进行匹配,当被匹配的频道接到消息时,模式也会将消息转发给模式的订阅者。
订阅者(subscriber):通过订阅频道或者模式来获取消息的客户端。每个频道或者模式都可以有任意多个订阅者。
1.1 发布与订阅类型
1、 频道客户端订阅与消息发布:
B 、 C 、 D 三个客户端正在订阅 news::it 频道。当客户端 A 向 news::it 频道发送消息 “hello world” 时,该消息将被频道转发至 B 、 C 、 D 三个客户端。
2、 模式客户端订阅与消息发布:
客户端 C 和 D 订阅了 news::[ie]t 模式,而这个模式又和 news::it 、 news::et 两个频道匹配,当 news::it 频道或者 news::et 频道接收到消息的时候,这些消息不仅会被转发给频道的订阅者,也会被转发给客户端 C 和 D 。
3、 模式订阅者接收消息示例:
4、 SUBSCRIBE命令:订阅给定的一个或多个频道的信息。
客户端一:远程连接Redis:/usr/local/software/redis-3.2.1/src/redis-cli -h 127.0.0.1 -p 6379-a "mypass"
命令:SUBSCRIBE news::it
# "subscribe" # 返回值的类型:显示订阅成功。
# "news::it" # 订阅的频道名字
# (integer) 1 # 目前已订阅的频道数量
# "message" # 返回值的类型:信息
# "news::it" # 来源
5、 PUBLISH命令:将信息 message 发送到指定的频道 channel 。返回值:接收到信息 message 的订阅者数量。
客户端二:远程连接Redis:/usr/local/software/redis-3.2.1/src/redis-cli-h 127.0.0.1 -p 6379 -a "mypass"
PUBLISH news::it 'send message to news::it number1'
客户端一:订阅者接收到的消息。
6、 PUBSUB命令:PUBSUB 是一个查看订阅与发布系统状态的内省命令, 它由数个不同格式的子命令组成, 以下将分别对这些子命令进行介绍。列出当前的活跃频道。活跃频道指的是那些至少有一个订阅者的频道, 订阅模式的客户端不计算在内。
pattern 参数是可选的:
如果不给出pattern 参数,那么列出订阅与发布系统中的所有活跃频道。
如果给出 pattern 参数,那么只列出和给定模式pattern 相匹配的那些活跃频道。
7、 PUBSUB NUMSUB命令:返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。
8、 PUBSUB NUMPAT命令: 返回订阅模式的数量。
——厚积薄发(yuanxw)