作用: 发布订阅类似于信息管道,用来进行系统之间消息解耦,类似于mq,rabbitmq、rocketmq、kafka、activemq主要有消息发布者和消息订阅者。比如运用于:订单支付成功,会员系统加积分、钱包进行扣钱操作、发货系统(下发商品)
消息发布者通过管道channel将消息分发到1、2、3订阅者上
问题:为什么不直接将消息发布到订阅上呢? 其实就是解耦
只需要关心发布有没有将消息发不过去 订阅有没有去订阅
Redis发布消息实操
PUBLISH:发布消息
首次发布显示有0个订阅在监听
PUBLISH:订阅消息
开启多个终端 客户端连接redis 订阅channela 此时有两个订阅者
此时发布者再发布test1的消息 结果显示订阅者会迅速接收到消息 并显示两个监听者
UNSUBSCRIBE:取消订阅指定的频道,如果不指定,则取消订阅所有的评到
Redis的消息订阅发布和mq对比
Redis发布订阅功能比较薄弱,但比较轻量级。
MQ会对消息进行持久化,redis也会持久化,但不排除数据丢失的情况(rdb、aof)
化,redis也会持久化,但不排除数据丢失的情况(rdb、aof)
Redis没有后台功能 MQ有msgId 、msgKey去查询消息 但如果一般使用是没有什么问题的