Mybatis的一级缓存和二级缓存(缓存机制)

什么是缓存?

当用户对于数据库进行查询时,数据库就会把该次查询的数据进行缓存。当用户再一次进行相同的数据库查询操作,就不会对数据库进行查询,而是直接进缓存中拿取数据,减少数据库的负担。(读写分离)

一级缓存

        一级缓存也就是本地缓存。是SqlSession级别的,作用在一次会话之间,也就是在创建SqlSession和关闭Sqlsession(session.close())之间。是mybatis的默认缓存机制。在用户进行查询语句后,下一次会话之间,下一次进行相同的查询语句,不会查询数据库,而是直接走一级缓存中的数据。

注意:

1、在执行查询语句后,进行增删改等操作,会删除一级缓存的数据(因为可以会对数据进行修改)

2、在不同的SqlSession中的一级缓存并不通用。(也就是两个SqlSession对像之间一级缓存的数据不同)

3、一级缓存可以使用SqlSession.cleaCache()进行手动清楚

4、一级缓存中会有时间机制,过一段时间会自动清除缓存

二级缓存

        二级缓存是基于多个SqlSession共享数据的缓存机制,二级缓存的级别是Mapper级别(也就是一个配置文件之间)。二级缓存是当用户进行数据库查询数据之后,存入一级缓存之中,一级缓存(sqlSession)关闭后,一级缓存的数据就会存入二级缓存中,进行数据共享。但是二缓存页存在并发问题,在对数据进行删除增加修改后,二级缓存中的数据也会清空,来确保数据的准确性。

注意:

1、配置开启二级缓存:在MyBatis的配置文件中,需要设置

2、明确哪些Mapper使用二级缓存:在Mapper接口对应的XML文件中,使用

3、实现序列化:如果缓存的对象需要被序列化,确保实体类实现了Serializable接口。

4、注意缓存的有效范围和生命周期:可以通过配置相关参数来调整缓存的最大大小、存活时间和清除策略。

开启二级缓存的步骤:

1、在mybatis中指定位置文件的二级缓存

<!--    指定开启二级缓存     name="cacheEnabled" mybatis指定   value可以修改 -  -->
    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>

2、在配置文件中开启二级缓存

<!--    手动开启二级缓存-->
    <cache/>
<!--    或者第二种写法  
eviction="FIFO"  :设置清楚缓存的策略,先进先出策略
flushInterval="6000"   :设置默认清除二级缓存的时间60秒
size="512"            :缓存的数据长度,默认是512
-->
    <cache
            eviction="FIFO"
            flushInterval="60000" 
            size="512"/>

示例:

 对实体类进行序列化:

 实现二级缓存

 缓存原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值