首页 > 代码库 > Redis学习笔记07Redis命令之(6) 发布订阅
Redis学习笔记07Redis命令之(6) 发布订阅
1.1.1. subscribe
订阅一个或多个频道。当所订阅的频道上发布了消息时,本客户端连接将收到这个消息。
redis.coe2coe.me:6379> subscribe abc
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "abc"
3) (integer) 1
成功订阅了一个频道。
也可以一次订阅多个频道:
redis.coe2coe.me:6379> subscribe abc 123 456
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "abc"
3) (integer) 1
1) "subscribe"
2) "123"
3) (integer) 2
1) "subscribe"
2) "456"
3) (integer) 3
成功订阅了3个频道。
1.1.2. publish
发布消息到指定的频道。
redis.coe2coe.me:6379> publish abc hello
(integer) 0
返回值0表示此时没有客户端连接订阅这个频道。即使之后有客户端连接订阅了这个频道,也不会再收到这次发布的消息。必须先订阅,再发布。
redis.coe2coe.me:6379> publish abc "hello,redis"
(integer) 3
返回值3表示有三个客户端连接订阅了这个频道,并且接收到了这个消息。
此时,订阅了这个频道的客户端连接将收到这个消息:
redis.coe2coe.me:6379> subscribe abc
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "abc"
3) (integer) 1
在发布消息hello,redis之前,已经订阅了这个频道abc。
1) "message"
2) "abc"
3) "hello,redis"
收到了本次发布的消息:hello,redis。
1.1.3. unsubscribe
取消对指定频道的订阅。
两种方式:
(1)取消对所有频道的订阅。
unsubscribe
(2)取消对指定频道的订阅。
unsubscribe abc
1.1.4. psubscribe
支持模糊匹配的订阅,频道名称可以使用模糊匹配。
redis.coe2coe.me:6379> psubscribe a*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "a*"
3) (integer) 1
订阅所有频道名称以a开头的频道。
1.1.5. punsubscribe
支持模糊匹配的取消订阅。
redis.coe2coe.me:6379> punsubscribe a*
1) "punsubscribe"
2) "a*"
3) (integer) 0
1.1.6. pubsub channels
查看频道列表,包括订阅的频道,或者发布的频道。
redis.coe2coe.me:6379> pubsub channels
1) "456"
2) "123"
3) "abc"
支持频道名的模糊匹配:
redis.coe2coe.me:6379> pubsub channels a*
1) "abc"
1.1.7. pubsub numsub
查询频道的订阅者的数量。
redis.coe2coe.me:6379> pubsub numsub abc 123
1) "abc"
2) (integer) 2
3) "123"
4) (integer) 1
发现频道abc有2个订阅者,频道123有1个订阅者。
当不指定频道名称时,返回空集合。
redis.coe2coe.me:6379> pubsub numsub
(empty list or set)
pubsub numsub abc返回的结果不包括使用psubscribe ab* 订阅的订阅者,尽管该订阅者也能收到abc频道上发布的消息。
1.1.8. pubsub numpat
查看采用psubscribe订阅的订阅者数量,不包括使用subscribe订阅的订阅者。
redis.coe2coe.me:6379> pubsub numpat
(integer) 1
此命令不支持指定频道名称。
redis.coe2coe.me:6379> pubsub numpat abc
(error) ERR Unknown PUBSUB subcommand or wrong number of arguments for ‘numpat‘
redis.coe2coe.me:6379> pubsub numpat ab*
(error) ERR Unknown PUBSUB subcommand or wrong number of arguments for ‘numpat‘
Redis学习笔记07Redis命令之(6) 发布订阅