mybatis二级缓存设置

这篇博客详细介绍了MyBatis的缓存机制,重点讲解了二级缓存的配置和实现步骤,包括一级缓存的基本概念,以及为何需要引入二级缓存。同时,文章也提及了三级缓存的概念。
摘要由CSDN通过智能技术生成

缓存

什么是缓存
	存储在运行内存中的数据 -- 缓存数据

	计算机的存储方式效率不高,因此会将一些数据放在内存中
		- 数据的清空机制
		- 数据的复用机制

为什么要用缓存
	部分数据不要求实时性,并且使用频率较高,可以将此数据缓存到内存中

一级缓存

事务缓存 sqlsession
mybatis默认开启了一级缓存
在同一个事务中,默认将sql查询结果进行缓存,如果之后还需要执行相同的sql语句,默认不会再次查询
如果保存查询结果之后,进行了相关表的更新操作(添加,删除,修改),清空之前保存的数据

二级缓存

应用级缓存
同一个configuration对象中有效
缓存所有的查询结果,更新操作会刷新缓存结果

实现步骤

1、开启mybatis二级缓存,需要在configuration配置文件中进行配置
<settings>
   <!-- 开启二级缓存  默认值为true -->
	<setting name="cacheEnabled" value="true"/>
</settings>

2、需要保存的对象都必须实现序列化接口
	Serializable

3、需要mapper配置文件中进行缓存设置
	
    eviction:代表的是缓存回收策略,目前MyBatis提供以下策略。
    (1) LRU,最近最少使用的,一处最长时间不用的对象
    (2) FIFO,先进先出,按对象进入缓存的顺序来移除他们
    (3) SOFT,软引用,移除基于垃圾回收器状态和软引用规则的对象
    (4) WEAK,弱引用,更积极的移除基于垃圾收集器状态和弱引用规则的对象。这里采用的是LRU,
            移除最长时间不用的对形象

    flushInterval:刷新间隔时间,单位为毫秒,这里配置的是100秒刷新,如果你不配置它,那么当
    SQL被执行的时候才会去刷新缓存。

    size:引用数目,一个正整数,代表缓存最多可以存储多少个对象,不宜设置过大。设置过大会导致内存溢出。
    这里配置的是1024个对象

    readOnly:只读,意味着缓存数据只能读取而不能修改,这样设置的好处是我们可以快速读取缓存,缺点是我们没有
    办法修改缓存,他的默认值是false,不允许我们修改
<cache eviction="LRU" flushInterval="100000" readOnly="true" size="1024"/>

三级缓存

一般会采用NoSQL数据库进行缓存操作
将查询结果存储到NoSQL数据库 - 散列算法(目前查询效率最高的算法)
Redis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值