一、概念
发布订阅是一种应用程序(系统)之间的通讯 传递数据的技术手段
特别是在异构(不同语言)的系统之间作用非常明显
发布订阅可以实现应用(系统)之间的解耦合
类似于微信中关注公众号/订阅号 那么订阅者能及时获取到最新的内容 或者微博的订阅也是类似
日常生活中听广播 看电视 都需要有信息的发布者 收听的人需要先订阅
发布和订阅是一对多的关系
- 订阅:对某个内容感兴趣 需要实时获取新的内容
那么当关注的内容一旦有变化就能立即得到通知
这是"多"的一方 - 发布:提供某个内容 将内容信息发送给多个对此内容感兴趣的订阅者
是有主动权的一方
是"一"的一方
发布订阅应用在即时通信应用中较多
例如网络聊天室 实时广播 实时提醒等
滴滴打车的抢单 外卖的抢单 微信群发红包 抢红包都可以用发布订阅来实现
二、Redis的发布和订阅
Redis的发布订阅(pub/sub)是一种消息通信模式
发送者(publish)发送消息 订阅者(subscribe)接收消息
发布订阅也叫生产者-消费者模式 是实现消息队列的一种方式
订阅者先订阅频道 然后发布者向频道发送消息 所有订阅者都能接收到
订阅者订阅一个频道后会一直监听 直到手动退出
订阅示意图:
发布示意图:
1、操作命令
①、订阅一个或多个符合给定模式的频道
每个模式以 * 作为匹配符 比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等)
news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类
subscribe pattern [pattern ...]
②、订阅给定的一个或多个频道的信息
subscribe channel [channel ...]
③、将信息发送到指定的频道
publish channel message
④、查看订阅与发布系统的状态
pubsub subcommand [argument [argument ...]]