合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 一、概述 Redis通过publish和subscribe命令实现订阅和发布的功能。订阅者可以通过subscribe向redis server订阅自己感兴趣的消息类型。redis将信息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的信息时,订阅该消息类型的全部订阅者都会收到此消息; >[danger] 通过这个功能,实际上,Redis扮演了消息中间件;从实用角度,还是专业的消息中间件更值得使用; ## 二、流程 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 * pub -> publisher * sub -> subscriber 发布: ![](https://img.kancloud.cn/ba/a5/baa5aba436673c9be816186c264f2aea_1518x754.png) ### **模式订阅** Redis为了方便同时订阅多个模式的频道,也有类似市面上常见的MQ中模式订阅功能(如Rabbit MQ中的Topic),这个功能可以匹配符的方式进行订阅; ## 三、问题 Pub/Sub基本上已经被抛弃,最主要的原因是它无法持久化,没有实现持久化机制的Pub/Sub,是无法做到消息的不丢失,在客户端宕机或者Redis服务宕机的情况下,都会导致消息丢失; >[danger] 大部分情况下,我们都不会用到Redis去做消息中间件,市面上成熟且好用的消息中间件非常多,如MQTT相关中间件,RocketMQ,Kafka等,如果真的需要使用Redis来做消息中间件,可以考虑Redis 5.0的新数据结构Stream,这个功能在Pub/Sub的基础上,实现了持久化机制,并且大力借鉴了Kafka的设计原理,完善了Redis用于实现消息队列的不足之处;