SUBSCRIBE:订阅频道
用户可以通过执行SUBSCRIBE命令,让客户端订阅给定的一个或多个频道:
SUBSCRIBE channel [channel channel ...]
SUBSCRIBE命令在每次成功订阅一个频道之后,都会向执行命令的客户 端返回一条订阅消息,消息包含了被成功订阅的频道以及客户端目前 已订阅的频道数量。
举个例子,如果我们想要订阅"news.it"频道,那么可以执行以下命令:
redis> SUBSCRIBE "news.it"
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "news.it"
3) (integer) 1
SUBSCRIBE命令在订阅"news.it"频道之后向客户端返回了一条订阅消息:
·消息的第一个元素是"subscribe",它表示这条消息是由SUBSCRIBE 命令引发的订阅消息而不是普通客户端发送的频道消息。 ·消息的第二个元素记录了被订阅频道的名字"news.it"。 ·消息的最后一个元素是数字1,这表示客户端目前只订阅了一个频道。
如果我们使用SUBSCRIBE命令同时订阅多个频道,那么命令将返回多条订阅消息,就像这样:
redis> SUBSCRIBE "news.it" "news.sport" "news.movie"
Reading messages... (press Ctrl-C to quit)
1) "subscribe" --第1条订阅消息
2) "news.it"
3) (integer) 1
1) "subscribe" --第2条订阅消息
2) "news.sport"
3) (integer) 2
1) "subscribe" --第3条订阅消息
2) "news.movie"
3) (integer) 3
接收频道消息
当客户端成为频道的订阅者之后,就会接收到来自被订阅频道的消 息,我们把这些消息称为频道消息。与订阅消息一样,频道消息也是 由3个元素组成的:
·消息的第1个元素为"message",用于表明该消息是一条频道消息而 非订阅消息。 ·消息的第2个元素为消息的来源频道,用于表明消息来自于哪个频 道。 ·消息的第3个元素为消息的正文,也就是消息的真正内容。
作为例子,以下代码展示了订阅者收到的两条频道消息,它们分别来 自两个不同的频道,并且消息的内容也各不相同:
redis> SUBSCRIBE "news.it" "news.sport" "news.movie"
Reading messages... (press Ctrl-C to quit)
... --省略订阅频道时返回的订阅消息
1) "message" --这是一条频道消息
2) "news.it" --来源是"news.it"频道
3) "hello it" --内容为"hello it"
1) "message" --这是一条频道消息
2) "news.sport" --来源是"news.sport"频道
3) "hello sport" --内容为"hello sport"