PSUBSCRIBE:订阅模式
用户可以通过执行 PSUBSCRIBE 命令,让客户端订阅给定的一个或多个模式:
PSUBSCRIBE pattern [pattern pattern ...]
传入PSUBSCRIBE命令的每个pattern参数都可以是一个全局风格的匹配 符,比如"news.*"模式可以匹配所有以"news."为前缀的频道, 而"news.[ie]t"模式则可以匹配"news.it"频道和"news.et"频道,诸如此类。
举个例子,如果我们想要订阅所有带有"news."前缀的频道的消息,那么可以执行以下命令:
redis> PSUBSCRIBE "news.*"
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
与SUBSCRIBE命令一样,PSUBSCRIBE命令在成功订阅一个模式之后也会 返回相应的订阅消息,这条消息由3个元素组成:
·第1个元素是"psubscribe",它表明这条消息是由PSUBSCRIBE命令引 发的订阅消息。 ·第2个元素是被订阅的模式。 ·第3个元素是客户端目前订阅的模式数量。
比如在上面执行的PSUBSCRIBE命令中,订阅消息的第2个元素 为"news.",第3个元素为数字1,这表明客户端目前只订阅 了"news."这一个模式。
如果我们使用PSUBSCRIBE命令同时订阅多个模式,那么客户端将会收 到多条模式订阅消息,就像这样:
redis> PSUBSCRIBE "news.*" "notification.*" "chat.*"
Reading messages... (press Ctrl-C to quit)
1) "psubscribe" --第1条模式订阅消息
2) "news.*"
3) (integer) 1
1) "psubscribe" --第2条模式订阅消息
2) "notification.*"
3) (integer) 2
1) "psubscribe" --第3条模式订阅消息
2) "chat.*"
3) (integer) 3
接收模式消息
客户端在订阅模式之后,就会收到所有与模式相匹配的频道的消息, 我们把这些消息称为模式消息。模式消息与之前展示的订阅消息以及 频道消息稍微有些不同,它由4个元素组成:
·消息的第1个元素为"pmessage",它表示这是一条模式消息而不是订 阅消息或者频道消息。 ·消息的第2个元素为被匹配的模式,而第3个元素则是与模式相匹配 的频道。 ·消息的第4个元素为消息的正文,也就是消息的真正内容。
比如,以下展示的就是一条来自"news.it"频道的模式消息,该频道与 客户端订阅的"news.*"模式相匹配,而消息的正文则是"hello it":
redis> PSUBSCRIBE "news.*" "notification.*" "chat.*"
Reading messages... (press Ctrl-C to quit)
... --省略订阅消息
1) "pmessage" --这是一条模式消息
2) "news.*" --匹配的模式
3) "news.it" --被匹配的频道
4) "hello it" --消息正文