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

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

第一个原因是和redis系统的稳定性有关。对于旧版的redis来说,如果一个客户端订阅了某个或者某些频道,但是它读取消息的速度不够快,那么不断的积压的消息就会使得redis输出缓冲区的体积越来越大,这可能会导致redis的速度变慢,甚至直接崩溃。也可能会导致redis被操作系统强制杀死,甚至导致操作系统本身不可用。新版的redis不会出现这种问题,因为它会自动断开不符合client-output-buffer-limit pubsub配置选项要求的订阅客户端

第二个原因是和数据传输的可靠性有关。任何网络系统在执行操作时都可能会遇到断网的情况。而断线产生的连接错误通常会使得网络连接两端中的一端进行重新连接。如果客户端在执行订阅操作的过程中断线,那么客户端将会丢失在断线期间的消息,这在很多业务场景下是不可忍受的。

转载于:https://my.oschina.net/u/2457218/blog/3065021

redis的发布订阅缺陷相关推荐

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

    Redis实现 发布/订阅 消息对列 前言 发布订阅是一种典型的异步通信模型,可以让消息的发布者和订阅者充分解耦 一.什么是发布/订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发 ...

  2. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  3. 4 Redis的发布订阅

    Redis 的发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息 Redis 客户端可以订阅任意数量的频道. 先订阅后发布才能收到消息 1 打开一个客户端 ...

  4. .net core 使用Redis的发布订阅

    Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心.接下来介绍一下.net core 使用 ...

  5. SpringBoot整合redis实现发布订阅模式

    Redis的发布订阅模式 发布订阅(Pub/Sub):目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接 ...

  6. Spring boot整合Redis实现发布订阅(超详细)

    Redis发布订阅 基础知识 相关命令 订阅者/等待接收消息 发布者/发送消息 订阅者/成功接收消息 常用命令汇总 原理 Spring boot整合redis 导入依赖 Redis配置 消息封装类(M ...

  7. java实现Redis消息发布订阅

    Redis发布订阅架构 Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel. 发布者和订阅者都是Redis客户端,Channel则为 ...

  8. Redis的发布订阅模式

    本文源码参看:https://github.com/duktig666/learn-example/tree/5586febea31c2fb368e19fbdba11ed08afd463e0/Redi ...

  9. Redis:发布订阅机制

    参考资料: <Redis进阶--发布订阅详解> <Redis 发布订阅> <Redis进阶 - 消息传递:发布订阅模式详解> 写在开头:本文为学习后的总结,可能有不 ...

最新文章

  1. nacos 怎么配置 里的配置ip_Nacos部署--配置中心
  2. c primer plus 5 读书笔记1
  3. CSS--使用display:inline-block;存在间隙问题解决
  4. Redhat 释放cached 内存
  5. ABAP物料仓位扩充
  6. Python的字符串
  7. 学习python: x+=1 与 x = x + 1
  8. Julia: feather格式和hdf5格式比较
  9. Weld(CDI)教程
  10. 微信小程序图片上传组件
  11. AngularJs--ng-repeate渲染完毕后执行的代码
  12. 前端谷歌浏览器显示海康rtsp视频
  13. 把你的 Mac 从 Catalina 降级回 Mojave 系统的避坑指南
  14. oracle 会话数上不去_(一)UDS诊断服务中的诊断会话控制(DiagnosticSessionControl,0x10)...
  15. 分享大神的一些博文、视频、资料--持续更新
  16. XYNUOJ Six Degrees of Separation
  17. 《管理信息系统》考研复试整理
  18. 会计科目主数据 由非成本要素变为成本要素
  19. 物联网:以物为本还是以人为本?
  20. spring junit整合单元测试

热门文章

  1. dbca静默建库踩坑
  2. 聚观早报 | ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜
  3. BLOXORZ 游戏攻略
  4. Dynamics CRM 中 Xrm.Page.getControl('name').getValue() 和 Xrm.Page.getAttribute('name').getValue() 的区别
  5. 【前端学习】前端学习第二天:图片标签、音频标签及视频标签的用法说明
  6. 虚拟现实制陶制作方法对中学生创造力和学习参与度的影响
  7. 当C++遇到空指针异常......
  8. 【力扣】77. 组合
  9. Ajax的简单使用与JSON数据格式
  10. 企业短信平台 php,梅州PHP短信平台企业,PHP短信平台