MyBatis的二级缓存可以提高应用程序的性能,因为它可以避免频繁地从数据库中读取数据。在开启二级缓存后,查询结果首先会被缓存在内存中,以便下次查询时直接从缓存中获取数据。
一、开启MyBatis的二级缓存具体步骤如下:
- 在配置文件中的MyBatis项目添加以下代码:
mybatis:
configuration:
cache-enabled: true
- 在Mapper文件中添加以下代码:
@CacheNamespace(eviction= LruCache.class,flushInterval = 60000, size = 512, readWrite = true)
3.在XML文件中添加以下代码
<cache-ref namespace="com.ruoyi.system.mapper.TAppUserMapper"/>
其中,eviction
属性指定了缓存的回收策略,flushInterval
属性指定了缓存的刷新时间间隔,size
属性指定了缓存的最大容量大小,readOnly
属性指定了缓存是否只读。
二、MyBatis内置的二级缓存可以使用不同的算法来回收缓存对象,主要有以下几种:
- LRU - 最近最少使用,移除最长时间不被使用的对象,这是默认的算法
- FIFO - 先进先出,按照缓存进入的顺序来移除它们
- SOFT - 软引用,移除基于垃圾回收器状态和软引用规则的对象
- WEAK - 弱引用,更积极地移除基于垃圾收集器和弱引用规则的对象
这些算法各有优势和劣势,具体取决于缓存的大小、访问频率、内存情况等因素。一般来说:
LRU算法比较适合那些访问热点数据较多的场景,可以保证最常用的数据不被淘汰
FIFO算法比较简单,但是可能会导致一些刚刚进入缓存就被淘汰的情况
SOFT和WEAK算法比较适合那些内存敏感的场景,可以根据内存压力动态调整缓存大小
三、需要注意:
开启二级缓存并不是适用于所有情况的,因为缓存也有一些限制和副作用。例如,如果应用程序中的数据经常发生变化,则使用缓存可能会导致数据不一致或过期。此外,对于复杂查询或具有多表连接的查询,缓存的效果可能不佳。