栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

为什么要用redis而不是直接在java里hashMap 为什么用消息队列而不是直接在java里开个队列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么要用redis而不是直接在java里hashMap 为什么用消息队列而不是直接在java里开个队列

俩个问题是一个问题
①首先JVM数据进程内共享,进程间不共享。
②jvm保存数据量过大,很容易导致OOM。
③Java适合保存小数据,毕竟通过中间件中间会多一跳网络请求。
④没有内存缓存到磁盘机制,实现起来麻烦

拓展举例:【要用redis而不是直接在java里hashMap】
这个问题类似【为什么token不存在session而不是redis】,当服务器水平拓展的时候,单个服务器只保存了部分session,为了解决这一问题,tomcat需要冗余其他tomcat的session。

总结:体量不大,项目处于开发阶段完全可以使用Java缓存,数据量小的时候单个Java性能肯定更好(少了进程间通信),引入redis和mq都无疑增加了系统复杂度。
但随着系统请求量加大数据增多,解耦那是必须的,试想下,单机Java内存中缓存了100G的消息,导致整个系统OOM那可就得不偿失,如果100G是在redis或者mq中,这俩个挂掉了也只是影响整个服务的部分。

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

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

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