Redis的发布订阅

什么是发布订阅?

发布和订阅是进程间的一种消息通信模式:发送者(publisher)将消息发送给一个第三方,订阅者(subscriber)从第三方那里接收消息。

Redis的发布订阅_第1张图片

这个第三方我们通常称之为 消息中间件,消息中间件主要是用来做系统之间异步通信,常见的消息中间件有:ActiveMQ,RocketMQ,RabbitMQ,Kafka 等。
Redis 一般不用来做消息中间件,只用它做缓存,但是它仍然提供了这个功能。

发布和订阅应用场景?

场景:我们订阅了头条上的某个栏目的新闻,当这个栏目有新的新闻的时候,头条(服务端)会主动推送给我们,而我们(客户端)无需主动请求。

发布和订阅的优点?

由于我们所需的消息并不是从服务器直接请求得来,而是从消息中间件获得,因此缓解了服务端在高并发量情况下的压力。

就好比你是手机生产厂商,你不直接卖手机,而是把手机先交给代理商,代理商替你卖,你就轻松了。

Redis的发布订阅_第2张图片

发布和订阅的缺点?

  • 如果消费者不在线,消息可能接受不到(当然我们可以通过持久化存储的方式来解决)。

  • 实时性相对于服务器-客户端这种一对一的通信方式来说低一些。

Redis 是如何实现发布和订阅的?

涉及到的命令:

  • subscribe c1 c2 c3 ...:订阅 c1,c2,c3,…等频道。
  • psubscribe new*:订阅前缀为 new的频道。
  • publish channel message:向 channel 频道发送 message 消息。

输入完 subscribe c1 c2 c3之后,客户端就进入等待状态,等待订阅的频道向自己发送消息:

Redis的发布订阅_第3张图片

通过通配符来订阅多个频道:

Redis的发布订阅_第4张图片

关注我的微信公众号(曲健磊的个人随笔),观看更多精彩内容:
Redis的发布订阅_第5张图片

你可能感兴趣的:(【redis】)