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)查询时先看二级缓存中有没有,再看一级缓存中有没有,如果都没有才会去查数据库。
努力,向上,自律