栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Redis 实现 发布/订阅 消息对列

Redis 实现 发布/订阅 消息对列

Redis实现 发布/订阅 消息对列 前言

发布订阅是一种典型的异步通信模型,可以让消息的发布者和订阅者充分解耦


一、什么是发布/订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
我们可以拿快递方面举例,
发布者 : 就是快递小哥,他把快递给你放到驿站
订阅者 : 放到驿站后,你就会收到消息,你的快递已经放到驿站,你就去驿站拿就OK了
这里的发布者和订阅者的关系不大,快递小哥只负责把快递放到驿站,而你去取,两者没有直接接触
这样他们的耦合度就大大降低了**

二、Redis实测 1.我们开启两个redis客户端

截图实例 :

我在这里开启两个redis客户端

2.订阅频道

代码如下(示例):

subscribe 频道名

2.发布消息 message

代码如下(示例):

publish 频道名 "内容"


我们在发布消息的时候,订阅方就会立马收到,如何发送的频道没有客户端订阅,则返回0

总结

虽然redis实现了发布订阅(publish/subscribe)的功能,但是在通常的情况下是不推荐使用的,如果想使用消息队列这种功能,最好还是使用专业的各种MQ中间件,例如rabbitMQ,rockedMQ,activitedMQ等

概要说一下就是,publish和subscribe 的缺陷在于客户端必须一直在线才能接收到消息,断线可能会导致客户端丢失消息,除此之外,旧版的redis可能会由于订阅者消费不够快而变的不稳定导致崩溃,甚至被管理员杀掉

原因1 : 客户端订阅了频道,但自己读取消息的速度却不够快的话,那么不断积压的消息会使redis输出缓冲区的体积变得越来越大,这可能使得redis本身的速度变慢,甚至直接崩溃。
原因2: 这和数据传输可靠性有关,如果在订阅方断线,那么他将会丢失所有在短线期间发布者发布的消息,这个让绝不多数人都很失望吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号