MybatisPlus二级缓存体系探究分析

 更新时间:2022年04月02日 18:39:07   作者:Java知识图谱  
这篇文章主要为大家介绍了MybatisPlus二级缓存体系探究分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

一、序言

本文承接[Mybatis缓存体系探究],提供基于MybatisPlus技术可用于生产环境下的二级缓存解决方案。

1、前置条件

掌握MyBatis二级缓存的原理

有关MyBatis缓存原理内容,参考[Mybatis缓存体系探究]

选择符合条件的MybatisPlus版本

本方案对MybatisPlus版本有严格的限制,使用版本不低于3.4.3.4,如果低于此版本,则无法满足生产环境条件下的闭环需求。

正确处理连接(多表)查询

正确的多表连接查询,请参考[MybatisPlus连接查询解决方案]

2、目标与收获

如果应用有分布式缓存需求,那么直接弃用二级缓存的方案,直接选配业务层缓存方案。

假如应用没有分布式场景,那么通过简单改造,引入二级缓存,能够极大提高响应效率。

二、原理分析

1、二级缓存

选用MybatisPlus来实现二级缓存最大的考量是其使用的单表操作,换而言之,正确的使用二级缓存的前提是不能使用传统意义上的多表连接操作,否则一定存在缓存数据不能实时更新的情况。

2、缓存数据更新

所有的缓存数据必然涉及到数据更新,二级缓存同样需要主动更新数据。二级缓存是以命名空间为单位的,换而言之同一个命名空间内的数据更新会自动触发缓存更新(本质为数据失效)。查询操作缓存数据,增加、修改、删除数据使缓存失效。

自成体系的缓存更新与管理在提高了应用响应速度的同时降低了缓存管理的复杂度,有利于提高开发效率。

3、缓存的区别

这里提到的二级缓存有必要与三级缓存(业务缓存)做区分,二级缓存指DAO层缓存,使用缓存的目的是降低网络IO对应用的影响;三级缓存指业务层缓存,主要是降低复杂计算对CPU性能的占用。

三、本地二级缓存

对于普通项目,使用内置本地二级缓存即能够满足需求,这里以MybatisPlus为例说明如何正确的使用二级缓存。

1、两套API

MybatisPlus内置封装两套访问数据库的API,一是以BaseMapper为基础的API,另一套是以AR为基础的API,二者在使用二级缓存不可通用。表现形式是BaseMapper内置接口缓存的数据,使用AR内置接口更新数据时无法清楚缓存,至少到此版本尚不支持。

考虑到BaseMapper接口体系比较丰富,因此选择保留BaseMapper体系接口而禁用AR接口,从机制上保证使用的是一套接口,从而调用增删查改能够实时刷新二级缓存。

需要指明的是Mapper层和Service层使用的是同一套接口,因此可放心使用。

2、缓存实现类型

默认二级缓存实现类型为PerpetualCache,此中类型的缓存要求被缓存的对象实现序列化接口。其它类型的本地缓存有EhCache、Caffeine等。

以上就是MybatisPlus二级缓存体系探究分析的详细内容,更多关于MybatisPlus二级缓存体系的资料请关注脚本之家其它相关文章!

相关文章

  • Git 如何放弃所有本地修改的方法

    Git 如何放弃所有本地修改的方法

    这篇文章主要介绍了Git 如何放弃所有本地修改的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 提高github下载速度的方法可达到2MB/s(100%有效)

    提高github下载速度的方法可达到2MB/s(100%有效)

    这篇文章主要介绍了提高github下载速度的方法可达到2MB/s(100%有效),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Git 2.27.0详细安装步骤详解

    Git 2.27.0详细安装步骤详解

    这篇文章主要介绍了Git 2.27.0详细安装步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • postman接口做关联测试的方法步骤

    postman接口做关联测试的方法步骤

    本文主要介绍了postman接口做关联测试的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 微信小程序下载工具及调试详解

    微信小程序下载工具及调试详解

    这篇文章主要介绍了微信小程序下载工具及调试详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • VSCode常用知识小结

    VSCode常用知识小结

    本文给大家汇总介绍了vscode的下载,安装,常用插件以及常用的快捷键,非常的详细,希望对大家使用vscode能够有所帮助
    2020-02-02
  • IM聊天教程之发送图片/视频/语音/表情

    IM聊天教程之发送图片/视频/语音/表情

    朋友在问如何在IM即时通讯中实现发送图片视频语音和表情呢,今天小编通过本文给大家详细介绍下,感兴趣的朋友一起看看吧
    2020-05-05
  • 解决HTTP服务响应数据不完整响应数据截断的问题

    解决HTTP服务响应数据不完整响应数据截断的问题

    这篇文章主要介绍了HTTP服务响应数据不完整响应数据截断的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Git中bundle命令的使用详解

    Git中bundle命令的使用详解

    这篇文章主要介绍了Git中bundle命令的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 命令行下的2款网页截图工具推荐

    命令行下的2款网页截图工具推荐

    这篇文章主要介绍了命令行下的2款网页截图工具推荐,分别是针对IE浏览器的IECapt和针对Firefox浏览器的PageSaver,需要的朋友可以参考下
    2014-07-07

最新评论