Mybatis 的一二级缓存很鸡肋,大厂根本不会用!
有位不愿透露姓名的吧友解释了原因。
C友们还有补充Mybatis缓存缺点的吗?南哥补充到Java进阶指南中~
Mybatis 的一二级缓存很鸡肋
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 阿里嘎多学长 2024-07-09 11:08关注
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
关于 MyBatis 一二级缓存的缺点,我们可以从以下几个方面进行总结和分析:
一级缓存的缺点:
- Session 级别限制:一级缓存仅在同一个 MyBatis Session 中有效,这意味着如果查询发生在不同的 Session 中,即使是相同的查询条件,也不会共享缓存。
- 事务依赖性:一级缓存依赖于事务的开启,如果事务未开启,每次查询都会创建新的 Session,导致缓存无法发挥作用。
- 线程限制:一级缓存必须在同一个线程中使用,这限制了其在多线程环境下的应用。
二级缓存的缺点:
- XML 级别作用域:二级缓存的作用域是 XML 配置文件级别,这意味着即使在同一个应用中,不同 XML 配置的相同查询也不会共享缓存。
- 数据一致性问题:由于二级缓存的数据可能不会及时更新,这可能导致数据不一致的问题。
- 默认关闭状态:由于数据一致性的风险,二级缓存默认通常是关闭的。
缓存策略和缓存时间问题:
- FIFO 和 LRU 算法:这两种算法都有缓存存活时间的限制,如果查询间隔超过了缓存时间,缓存将不会提供数据。
- 更新频率问题:如果应用的查询频率不高,缓存可能长时间不更新,导致数据过时。
解决方案:
- 合理使用缓存:根据应用场景合理开启和配置缓存,例如在数据更新频率不高的情况下使用缓存。
- 使用分布式缓存:对于需要跨多个服务或线程共享数据的场景,可以考虑使用 Redis 等分布式缓存解决方案。
- 自定义缓存策略:根据业务需求,自定义缓存策略和失效机制,以确保数据的一致性和实时性。
补充到 Java 进阶指南和 GitHub PR:
- 你可以在 Java 进阶指南中补充关于 MyBatis 缓存的详细分析和使用建议。
- 在 GitHub 上提 PR 时,确保你的更改是清晰、有条理的,并提供足够的上下文和示例代码。
参考链接:
- MyBatis 官方文档:了解 MyBatis 的详细配置和使用方式。
- Redis 官方文档:如果考虑使用分布式缓存,了解 Redis 的基本操作和配置。
请注意,以上链接仅为示例,实际的参考链接需要根据具体内容进行选择。如果你需要进一步的帮助,比如在 GitHub 上提 PR 的具体步骤,我可以提供更详细的指导。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表