注册

详解Redis UNSUBSCRIBE命令:取消订阅一个或多个频道

Redis UNSUBSCRIBE命令的作用是取消客户端订阅指定的一个或多个频道。当客户端不再需要接收某个频道的消息时,可以使用UNSUBSCRIBE命令取消订阅,这样客户端将不再接收该频道的任何消息。

UNSUBSCRIBE命令的使用方法如下:

UNSUBSCRIBE [channel [channel ...]]

其中,channel是要取消订阅的频道名称。可以同时取消订阅多个频道,多个频道名称用空格分隔。

以下是两个实例说明UNSUBSCRIBE的使用。

取消订阅单个频道

客户端A订阅频道news:

127.0.0.1:6379> SUBSCRIBE news
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "news"
3) (integer) 1

客户端B发布一条消息给频道news:

127.0.0.1:6379> PUBLISH news "Hello World"
(integer) 1

客户端A接收到了来自频道news的消息:

1) "message"
2) "news"
3) "Hello World"

现在,客户端A不再需要接收来自频道news的消息了,可以使用UNSUBSCRIBE命令取消订阅:

127.0.0.1:6379> UNSUBSCRIBE news
1) "unsubscribe"
2) "news"
3) (integer) 0

客户端A再次接收来自频道news的消息时,将不再显示。

取消订阅多个频道

客户端A同时订阅了频道news和频道music:

127.0.0.1:6379> SUBSCRIBE news music
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "news"
3) (integer) 1
1) "subscribe"
2) "music"
3) (integer) 2

客户端B分别给频道news和频道music发布了一条消息:

127.0.0.1:6379> PUBLISH news "Good Morning"
(integer) 1
127.0.0.1:6379> PUBLISH music "Yesterday Once More"
(integer) 1

客户端A依次收到了来自news和music两个频道的消息:

1) "message"
2) "news"
3) "Good Morning"
1) "message"
2) "music"
3) "Yesterday Once More"

现在,客户端A不再需要接收来自这两个频道的消息,可以使用UNSUBSCRIBE命令取消订阅:

127.0.0.1:6379> UNSUBSCRIBE news music
1) "unsubscribe"
2) "news"
3) (integer) 1
1) "unsubscribe"
2) "music"
3) (integer) 0

客户端A再次接收来自news和music频道的消息时,将不再显示。