写点什么

MyBatis 缓存机制的设计,兄弟连新版 linux 视频教程

作者:MySQL神话
  • 2021 年 11 月 27 日
  • 本文字数:1186 字

    阅读完需:约 4 分钟

一级缓存是 MyBatis 内部实现的一个特性,用户不能配置默认自动支持,用户无定制权利。


1.2 二级缓存




应用级别的缓存,生命周期长,跟应用的生命周期一样,即作用范围为整个应用。


默认关闭,也不建议使用,一般用 Redis 第三方来替代。


  • 缓存架构



2 工作机制


=====================================================================


2.1 一级缓存的工作机制




一级缓存是 Session 级别,一般一个 SqlSession 对象会使用一个 Executor 对象来完成会话操作,Executor 对象会维护一个 Cache 缓存,以提高查询性能,减少对 DB 的压力。



2.2 二级缓存的工作机制




如果用户配置了cacheEnabled=true,那么在为 SqlSession 对象创建 Executor 对象时,会对 Executor 对象加上一个装饰者 CachingExecutor,这时 SqlSession 使用CachingExecutor对象完成操作请求。


CachingExecutor 对查询请求,会先判断该查询请求在 Application 级别的二级缓存中是否有缓存结果


  • 有查询结果


直接返回缓存结果


  • 缓存未命中


再交给真正的 Executor 对象来完成查询操作,之后 CachingExecutor 会将真正 Executor 返回的查询结果放置到缓存中,然后再返回给用户


MyBatis 二级缓存设计灵活,可以使用:


  • MyBatis 自己定义的二级缓存实现

  • 实现 org.apache.ibatis.cache.Cache 接口自定义缓存

  • 使用第三方内存缓存库,如 Memcached




3 使用


===================================================================


MyBatis:


<cache type="org.mybatis.caches.ehcache.LoggingEhcache" >


<property name="memoryStoreEvictionPolicy" value="LRU"/>


</cache>


<select id="selectArticleListPage"


resultMap="resultUserArticleList"


useCache="false"


结局:总结+分享

看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。


开篇有提及我可是足足背下了 Java 互联网工程师面试 1000 题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱


  • Java 互联网工程师面试 1000 题



而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT 名企算法与数据结构题目最优解》,里面近 200 道真实出现过的经典代码面试题。


  • 程序员代码面试指南--IT 名企算法与数据结构题目最优解



  • 其余像设计模式,建议可以看看下面这 4 份 PDF(已经整理)



  • 更多的 Java 面试学习笔记如下,关于面试这一块,我额外细分出 Java 基础-中级-高级开发的面试


《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享


+解析,以及调优笔记等等等。。。



以上所提及的全部 Java 面试学习的 PDF 及笔记,如若皆是你所需要的,那么都可发送给你!


本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

MySQL神话

关注

还未添加个人签名 2021.11.12 加入

还未添加个人简介

评论

发布
暂无评论
MyBatis缓存机制的设计,兄弟连新版linux视频教程