JavaSouth南哥 2024-07-09 11:05 采纳率: 0%
浏览 26

Mybatis 的一二级缓存很鸡肋

Mybatis 的一二级缓存很鸡肋,大厂根本不会用!
有位不愿透露姓名的吧友解释了原因。
C友们还有补充Mybatis缓存缺点的吗?南哥补充到Java进阶指南中~

https://juejin.cn/post/7385559374025195546

img

img

img

img

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-07-09 11:08
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    关于 MyBatis 一二级缓存的缺点,我们可以从以下几个方面进行总结和分析:

    一级缓存的缺点:

    1. Session 级别限制:一级缓存仅在同一个 MyBatis Session 中有效,这意味着如果查询发生在不同的 Session 中,即使是相同的查询条件,也不会共享缓存。
    2. 事务依赖性:一级缓存依赖于事务的开启,如果事务未开启,每次查询都会创建新的 Session,导致缓存无法发挥作用。
    3. 线程限制:一级缓存必须在同一个线程中使用,这限制了其在多线程环境下的应用。

    二级缓存的缺点:

    1. XML 级别作用域:二级缓存的作用域是 XML 配置文件级别,这意味着即使在同一个应用中,不同 XML 配置的相同查询也不会共享缓存。
    2. 数据一致性问题:由于二级缓存的数据可能不会及时更新,这可能导致数据不一致的问题。
    3. 默认关闭状态:由于数据一致性的风险,二级缓存默认通常是关闭的。

    缓存策略和缓存时间问题:

    1. FIFO 和 LRU 算法:这两种算法都有缓存存活时间的限制,如果查询间隔超过了缓存时间,缓存将不会提供数据。
    2. 更新频率问题:如果应用的查询频率不高,缓存可能长时间不更新,导致数据过时。

    解决方案:

    1. 合理使用缓存:根据应用场景合理开启和配置缓存,例如在数据更新频率不高的情况下使用缓存。
    2. 使用分布式缓存:对于需要跨多个服务或线程共享数据的场景,可以考虑使用 Redis 等分布式缓存解决方案。
    3. 自定义缓存策略:根据业务需求,自定义缓存策略和失效机制,以确保数据的一致性和实时性。

    补充到 Java 进阶指南和 GitHub PR:

    • 你可以在 Java 进阶指南中补充关于 MyBatis 缓存的详细分析和使用建议。
    • 在 GitHub 上提 PR 时,确保你的更改是清晰、有条理的,并提供足够的上下文和示例代码。

    参考链接:

    请注意,以上链接仅为示例,实际的参考链接需要根据具体内容进行选择。如果你需要进一步的帮助,比如在 GitHub 上提 PR 的具体步骤,我可以提供更详细的指导。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月9日

悬赏问题

  • ¥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腾讯文档收集表