Redis详解3.发布订阅
2019-02-13 本文已影响6人
卢卡斯哔哔哔
1 简介
Redis提供了Pub/Sub功能(Publish/Subscribe)即发布及订阅功能:订阅者以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者可将订阅者感兴趣的事件随时通知相关订阅者。Redis的Pub/Sub是一种消息通信模式,主要的目的是解除消息发布者和消息订阅者之间的耦合, Redis作为一个Pub/Sub的Server,在订阅者和发布者之间起到了消息路由的功能。
2 命令
-
PUBLISH channel message
:将信息message发送到指定的频道channel。 -
SUBSCRIBE channel [channel ...]
:订阅给定的一个或多个频道的信息。 -
PSUBSCRIBE pattern [pattern ...]
:订阅一个或多个符合给定模式的频道;每个模式以 * 作为匹配符。 -
UNSUBSCRIBE [channel [channel ...]]
:指示客户端退订给定的频道,如果没有频道被指定,那么命令订阅的所有频道都会被退订。 -
PUBSUB CHANNELS [pattern]
:列出当前的活跃频道。活跃频道指的是那些至少有一个订阅者的频道, 订阅模式的客户端不计算在内。 -
PUBSUB NUMSUB [channel-1 ... channel-N]
:返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。 -
PUBSUB NUMPAT
:返回订阅模式的数量。这个命令返回的不是订阅模式的客户端的数量, 而是客户端订阅的所有模式的数量总和。
3 使用示例
client1启动订阅
# client1
127.0.0.1:6379> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
client2发送消息
# client2
127.0.0.1:6379> PUBLISH mychannel "Happy Valentine's Day."
(integer) 1
client1接收到消息
# client1
1) "message"
2) "mychannel"
3) "Happy Valentine's Day."
查看Pub/Sub
127.0.0.1:6379> PUBSUB CHANNELS
1) "mychannel"
127.0.0.1:6379> PUBSUB NUMSUB mychannel
1) "mychannel"
2) (integer) 1
127.0.0.1:6379> PUBSUB NUMPAT
(integer) 0