Loading

Mybatis笔记(六):一级缓存与二级缓存

 

时间:2021/10/20

 

一.一级缓存

有关一级缓存的内容是比较简单的,需要记住的是:一级缓存默认是开启的,只在一次SqlSession中有效,当该SqlSession被close时,该缓存也会被清空,同时,增删改操作也会刷新缓存。

 

 

二.二级缓存

1.开启二级缓存的步骤

1)在mybatis-config.xml配置文件的settings中全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存

 

虽然该变量的默认值为true,但是最好在配置文件中显示开启。

2)在映射器配置文件中开始缓存(如在UserMapper.xml中)

默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:

1 <cache/>

还可以通过一下属性进行更详细的配置:

1 <cache
2 eviction="FIFO"
3 flushInterval="60000"
4 size="512"
5 readOnly="true"/>

上面表示使用先进先出的顺序移除二级缓存中的对象,每隔60000秒刷新一次缓存,缓存中最多可以存储512个对象,并且只读。

可用的清除策略有:

LRU – 最近最少使用:移除最长时间不被使用的对象。
FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。

 

2.二级缓存的相关知识

1)二级缓存也叫全局缓存,一级缓存的作用域太低了,所以诞生了二级缓存。

2)如果当前会话关闭了,这个会话对应的一级缓存就没了;开启二级缓存后,会话关闭了,一级缓存中的数据被保存到二级缓存中。

3)新的会话查询信息,就可以从二级缓存中获取内容。

4)不同的mapper查处的数据会放在自己的缓存块中(也就是二级缓存对应的是mapper)。

5)查询时先看二级缓存中有没有,再看一级缓存中有没有,如果都没有才会去查数据库。

 

posted @ 2021-10-20 21:48    阅读(172)  评论(0编辑  收藏  举报