发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合。
Redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能。
订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。
当发布者通过publish命令向redis server发送特定类型的消息时,订阅该消息类型的全部client都会收到此消息,这里消息的传递是多对多的,一个client可以订阅多个 channel,也可以向多个channel发送消息。
1.订阅和发布:
为了订阅foo和bar,一个客户端发出一个订阅的频道名称操作:
SUBSCRIBE foo bar
此时,从另一个客户端我们发出关于频道名称为second的发布操作:
PUBLISH foo Hello
这时第一个客户端就会收到它订阅的频道的消息:
1) "message"
2) "foo"
3) "haha Hello"
2.模式匹配订阅
订阅操作也可以通过模式匹配来进行:
PSUBSCRIBE foo news.*
(表示订阅所有news.开头的频道,例如:news.art.figurative, news.music.jazz)
3. 取消订阅
UNSUBSCRIBE和PUNSUBSCRIBE(模式匹配)