博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【redis】来吧,展示一下redis 发布-订阅模式
阅读量:1983 次
发布时间:2019-04-27

本文共 1225 字,大约阅读时间需要 4 分钟。

在这里插入图片描述

前言推送

什么是“发布 - 订阅 模式”? 答:你知道“观察者模式”吗?

“发布 - 订阅 模式用来干嘛”? 答:你知道消息队列(MQ)的削峰、异步、解耦合吗?
redis的配置文件中是怎么来描述这个特性的? 答:可曾欣赏过redis.conf 吗?

这一切的一切,我都给你准备好了。

传送门


切入正题:发布/订阅

先来这么几张图:

在这里插入图片描述

在这里插入图片描述

Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。

在上面的两张图里面,很明显那个频道是channel1,而客户端就那三儿。

至于谁来发布消息啊?那自然也是一个充当“发布者”角色的客户端。

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端。

废话不多说,直接看操作:

Redis的消息机制:发布订阅	一publish: 发布消息		语法: publish channel名称"消息的内容”	一subscribe:订阅消息		语法: subscribe channel 名称 	——psubsribe:使用通配符来订阅消息		语法: psubsribe channel*名称

在这里插入图片描述

在这里插入图片描述

退订频道

使用 UNSUBSCRIBE 命令可以退订指定的频道, 这个命令执行的是订阅的反操作: 它从 pubsub_channels 字典的给定频道(键)中, 删除关于当前客户端的信息, 这样被退订频道的信息就不会再发送给这个客户端。

使用 PUNSUBSCRIBE 命令可以退订指定的模式, 这个命令执行的是订阅模式的反操作: 程序会删除 redisServer.pubsub_patterns 链表中, 所有和被退订模式相关联的 pubsubPattern 结构, 这样客户端就不会再收到和模式相匹配的频道发来的信息。

由于Redis的订阅操作是阻塞式的,因此一旦客户端订阅了某个频道或模式,就将会一直处于订阅状态直到退出。在SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE和PUNSUBSCRIBE命令中,其返回值都包含了该客户端当前订阅的频道和模式的数量,当这个数量变为0时,该客户端会自动退出订阅状态。

发布 - 订阅 实现

1)SUBSCRIBE

在这里插入图片描述

2)PSUBSCRIBE

在这里插入图片描述

3)PUBLISH

在这里插入图片描述

应用场景

构造实时消息系统,例如:即时聊天,群聊文章推送集中配置中心管理,当配置信息发生更改后,订阅配置信息的节点都可以收到

and so on.

Redis的发布订阅功能与Redis中的数据存储时无关的,它不会影响Redis的key space,即不会影响Redis中存储的数据,但通过发布订阅机制,Redis还提供了另一个功能,即Keyspace Notification,允许客户端通过订阅特定的频道,从而得知是否有改变Redis中的数据的事件。


在这里插入图片描述

转载地址:http://ewuvf.baihongyu.com/

你可能感兴趣的文章
小程序实现sku商品规格
查看>>
如何获取表格中input框以name为对象的key value为对象的value 直接获取对象
查看>>
has been blocked by CORS policy: Response to preflight request doesn‘t pass access control check 报错
查看>>
使用aspose.words 18.6实现pdf文档转换
查看>>
mybatis 异常:Parameter 'id' not found. Available parameters are
查看>>
[Java8新特性]Collectors源码阅读-1 toCollections和joining等
查看>>
[Java8新特性]Collectors源码阅读-2 reducing,maxBy,summingInt等
查看>>
包机制介绍
查看>>
JavaDoc---生成自己的API文档
查看>>
Java数组详解
查看>>
Java面向对象详解
查看>>
在Debian 8上使用Apt-Get安装Java
查看>>
vs中动态DLL与静态LIB工程中加入版本信息的方法
查看>>
大数据分析技术与应用一站式学习(值得收藏)_v20200418
查看>>
Qt 在windows下的串口读写
查看>>
如何在SpringMVC中配置Atomikos分布式事务
查看>>
Spring Boot 注解@EnableAutoConfiguration的解析
查看>>
SpringApplication执行流程
查看>>
Spring Boot Quartz 动态任务实现方式
查看>>
Spring MVC Quartz 动态任务实现方式
查看>>