详解Mybatis的二级缓存配置

作者:爱军_ 时间:2023-03-20 10:48:37 

一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要

每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的。

Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的Mapper

映射文件中添加一行:

<cache />

它将采用默认的行为进行缓存:

映射文件中所有的select语句将被缓存

映射文件中所有的insert、update和delete语句将刷新缓存

缓存将使用LRU(Least Recently Used)最近最少使用策略算法来回收

刷新间隔(no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新

缓存会存储列表集合和对象(无论查询方法返回什么)的1024个引用

缓存会被视为read/write(可读/可写)的缓存,意味着对象检索不是- 共享的,而且可以安全的被调用者修改,而不干扰其他调用者或者线程所做的潜在修改

所有这些属性都可以通过缓存元素的属性来修改,比如:


<!--1小时缓存-->
<cache eviction="LRU"
  flushInterval="3600000" size="512"
  readOnly="true"/>

这个更高级的配置创建了一个FIFO缓存,并每隔3个小时刷新缓存,储存结

果对象或列表的512个引用,而且返回的对象被认为是只读的,因此在不同线程中的调用者之间修改他们会导致冲突。

可用的收回策略有:

【默认】LRU——最近最少使用的:移除最长时间不被使用的对象

FIFO——先进先出的:按对象进入缓存的顺序来移除他们

SOFT——软引用:移除基于垃圾回收器状态和软引用规则的对象

WEAK——弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。

flushInterval(刷新间隔)可以被设置为任意的正整数(60*60*1000这种形式是不允许的),而且它们代表一个合理的毫秒形式的时间段。默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。

size(引用数目)可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目。默认值是1024.

readOnly(只读)属性可以被设置为true或false。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改,这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(通过发序列化)。这会慢一些,但是安全,因此默认是false。

配置完表示该mapper映射文件中,所有的select语句都将被缓存,所有的insert、update和delete语句都将刷新缓存。但是实际中,我们并是希望这样,有些select不想被缓存时,可以添加select的属性useCache=“false”;有些insert、update和delete不想让他刷新缓存时,添加属性flushCache=”false ”。

以上所述是小编给大家介绍的Mybatis的二级缓存配置网站的支持!

来源:http://blog.csdn.net/lsziri/article/details/71552668

标签:mybatis,二级缓存,配置
0
投稿

猜你喜欢

  • 深入解析C#设计模式编程中对建造者模式的运用

    2023-02-22 08:19:35
  • unity将图片转换成字体的方法

    2023-02-16 22:51:09
  • C#十五子游戏编写代码

    2023-06-13 07:33:22
  • C# 基础入门--关键字

    2023-01-22 15:44:23
  • springboot 排除redis的自动配置操作

    2023-01-20 04:25:47
  • Java cookie和session会话技术介绍

    2021-12-30 06:51:22
  • java使用Dijkstra算法实现单源最短路径

    2022-02-16 23:13:26
  • 用C#将图片保存至Oracle BLOB字段中的方法

    2023-06-12 01:29:16
  • 英雄联盟辅助lol挂机不被踢的方法(lol挂机脚本)

    2022-03-15 12:57:59
  • C#实现的WINDOWS登录功能示例

    2022-09-04 05:10:03
  • Android用tabhost实现 界面切换,每个界面为一个独立的activity操作

    2021-11-09 11:22:26
  • 在SpringBoot中配置Thymeleaf的模板路径方式

    2021-11-26 17:34:26
  • mybatisplus逻辑删除基本实现和坑点解决

    2021-05-24 11:35:50
  • android实现raw文件夹导入数据库代码

    2023-07-02 04:26:28
  • java使用ftp上传文件示例分享

    2021-10-23 08:33:03
  • android实现拖拽裁剪功能

    2022-03-10 09:37:14
  • SpringBoot之自定义Filter获取请求参数与响应结果案例详解

    2023-07-16 20:22:21
  • Spring Bean实例的创建及构造器的挑选

    2021-08-02 09:35:57
  • Android实战APP启动速度优化

    2023-03-21 15:34:18
  • Android开启新线程实现电子广告牌项目

    2023-02-10 20:47:10
  • asp之家 软件编程 m.aspxhome.com