Pub和Sub

订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者)。而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅。订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的。这种发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑。 Redis可以执行发布/订阅模式(publish/subscribe), 该模式可以解耦消息的发送者和接收者,使程序具有更好的扩展性.从宏观上来讲,Redis的发布/订阅模式具有如下特点:

  • 客户端执行订阅以后,除了可以继续订阅(SUBSCRIBE或者PSUBSCRIBE),取消订阅(UNSUBSCRIBE或者PUNSUBSCRIBE), PING命令和结束连接(QUIT)外, 不能执行其他操作,客户端将阻塞直到订阅通道上发布消息的到来.
  • 发布的消息在Redis系统中不存储.因此,必须先执行订阅,再等待消息发布. 但是,相反的顺序则不支持.
  • 订阅的通道名称支持glob模式匹配.如果客户端同时订阅了glob模式的通道和非glob模式的通道,并且名称存在交集,则对于一个发布的消息,该执行订阅的客户端接收到两个消息.
#消息通道(广播)
help @pubsub
#客户端执行
SUBSCRIBE aqua
#服务端执行
PUBLISH aqua "i'm minato aqua"
#消费端链接以后才能正常接收消息,未连接客户端之前的消息不会被接收到
publish aqua hello
#列出当前的活跃频道
PUBSUB channels
#返回给定频道的订阅者数量,订阅模式的客户端不计算在内
PUBSUB numsub aqua mea
#返回订阅模式的数量
client1:PSUBSCRIBE aqua mea
client2:PSUBSCRIBE mea aqua
client3:pubsub numpat

posted @ 2020-10-19 10:27  北斋  阅读(537)  评论(0编辑  收藏  举报