Redis的发布于订阅功能可以让多个客户端通过广播的方式,将消息同时发送至多个客户端,并且发送消息的客户端无需知道接收消息的客户端的具体信息。在Redis中,客户端可以订阅频道(chanenl)来接收或发送该channel的消息,我们把订阅channel的客户端称为订阅者(subscriber),发送消息的客户端称为发送者(pushlisher)。一个channel可以有多个订阅者,一个订阅者也可以订阅多个频道,客户端还可以通过向频道发送消息的方式,将消息发送给频道的所有订阅者。除了订阅频道外,客户端还可以通过订阅模式来接收消息,每当发布者向某个频道发送消息时,不仅频道的订阅者会接收到消息,与频道匹配的所有模式的订阅者也会接收到消息。
命令 | 描述 | |
---|---|---|
subscribe channel [channel…] | 订阅一个或多个频道,channel为频道的名称,执行subscribe命令会返回一条订阅信息,消息的第一个元素是”subscribe”,它表示这条信息有subscribe命令引发的订阅消息,而不是普通客户端发送的频道消息。第二个元素是被订阅频道的名称。第三个元素是数字1,表示客户端目前订阅了1个频道。当订阅者接收消息时订阅信息会发生变化,消息的第一个元素变为”message”表示是客户端发送的频道消息,第二个元素表示消息的来源频道,第三个元素为消息的内容。执行subscribe命令会造成客户端阻塞,使用unsubscribe退订频道时你无法看到明显的效果。 | |
publish channel message | 向指定频道发送消息,channel为频道名称,message为要发送的消息 | |
unsubscribe channel [channel…] | 退订一个或多个频道 | |
psubscribe pattern [pattern…] | 订阅一个或多个符合给定模式的频道。pattern可以是一个全局风格通配符,例如channel.*表示匹配所有以cahnnel.为前缀的频道,例如channel.[ie]t可以匹配channel.it或channel.ie。 psubscribe与subscribe命令一样返回订阅信息,只不过psubscribe在订阅多个频道时会返回多条订阅信息。 | |
punsubscribe pattern [pattern…] | 退订一个或多个符合给定模式的频道。执行punsubscribe命令会返回一条退订消息,消息由三个元素组成,第一个元素是”punsubscribe”表示该条消息由punsubscribe命令引起的退订,第二个元素是被退订的模式,第三个是客户端在执行当前退订后,仍在订阅模式的数量。 | |
pubsub subcommand [argument [argument …]] | 查看发布订阅信息 |
subscribe 与 publish 命令例子效果图:
psubscribe订阅一个或多个模式(下面例子订阅以channel.为前缀的频道):
pubsub命令用于查看发布、订阅有关的各种信息,pusub目前有3个子命令:
#作用:查看被订阅的频道
#语法 pubsub channels [pattern]
#例子1(查看所有模式被订阅的频道):pubsub channels
#例子2(查看以c.为前缀被订阅的频道):pubsub channels c.*
#作用:查看频道的订阅者数量
#语法:pubsub numsub [channel...]
#作用:查看被订阅者模式的总数量
#语法:pubsub numpat