Redis 发布和订阅详细介绍

发布和订阅

发布和订阅是什么

  1. 一句话:Redis 发布订阅(pub/sub) 是一种消息通信模式:发送者(pub) 发送消息,订阅者(sub) 接收消息

  2. Redis 客户端可以订阅任意数量的频道

一图胜千言

1、客户端订阅频道示意图

Redis 发布和订阅详细介绍_第1张图片

2、当给这个频道发布消息后,消息就会发送给订阅的客户端

Redis 发布和订阅详细介绍_第2张图片

如何理解发布和订阅模式

任务队列

1、顾名思义,就是"传递消息的队列"

2、与任务队列进行交互的实体有两类,一类是生产者(producer),另一类则是消费者(consumer)。生产者将需要处理的任务放入任务队列中,而消费者则不断地从任务队列中读入任务信息并执行

如何理解

可以这么简单的理解:

  1. Subscriber:收音机,可以收到多个频道,并以队列方式显示

  2. Publisher:电台,可以往不同的FM 频道中发消息

  3. Channel:不同频率的FM 频道

从Pub/Sub 的机制来看,它更像是一个广播系统,多个订阅者(Subscriber)可以订阅多个频道(Channel),多个发布者(Publisher)可以往多个频道(Channel)中发布消息。

发布订阅模式分类

个发布者,多个订阅者

  1. 主要应用:通知、公告

  2. -可以作为消息队列或者消息管道

-示意图

Redis 发布和订阅详细介绍_第3张图片

多个发布者,一个订阅者

各应用程序作为Publisher 向Channel 中发送消息,Subscriber 端收到消息后执行相应的业务逻辑,比如写数据库,显示…

主要应用:排行榜、投票、计数

示意图

Redis 发布和订阅详细介绍_第4张图片

多个发布者,多个订阅者

可以向不同的Channel 中发送消息,由不同的Subscriber 接收

主要应用:群聊、聊天

示意图

Redis 发布和订阅详细介绍_第5张图片

命令行实现发布和订阅

发布订阅操作

1、PUBLISH channel msg

​ 将信息message 发送到指定的频道channel

2、SUBSCRIBE channel [channel …]

​ 订阅频道,可以同时订阅多个频道
3、UNSUBSCRIBE [channel …]

​ 取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道

4、PSUBSCRIBE pattern [pattern …]

订阅一个或多个符合给定模式的频道,每个模式以* 作为匹配符,比如it* 匹配所有以it 开头的频道( it.news 、it.blog 、it.tweets 等等), news.* 匹配所有以news. 开头的频道( news.it 、news.global.today 等等),诸如此类

5、PUNSUBSCRIBE [pattern [pattern …]]

​ 退订指定的规则, 如果没有参数则会退订所有规则

快速入门

1、打开一个客户端订阅channel1

Redis 发布和订阅详细介绍_第6张图片

2、打开另一个客户端,给channel1 发布消息hello

Redis 发布和订阅详细介绍_第7张图片

3、返回的1, 是订阅者数量

4、发布的消息没有持久化

5、订阅的客户端, 只能收到订阅后发布的消息

Redis 发布和订阅详细介绍_第8张图片

你可能感兴趣的:(中间件,redis,java,数据库,运维,缓存)