size引用数目
缓存引用的最大数目,默认是1024
当缓存引用达到最大数目时,按照eviction设定的策略执行清除。
eviction清除策略:
LRU:最近最少使用:移除最长时间不被使用的对象;(LinkHashMap)
FIFO:先进先出:按对象进入缓存的顺序来移除它们;(LinkedList)
SOFT:软引用:基于GC和软引用规则移除对象;(SoftReference)
WEAK:弱引用: 基于GC和弱引用规则移除对象;(WeakReference)
二级缓存什么时候产生?
要满足一级缓存的产生条件(select)
close session 或者commit session。rollback不能缓存。
缓存的产生:
什么时候销毁?
一级缓存:session关闭、commit提交、rollback回滚、update更新、clearcache清除。
二级缓存:session关闭(创建二级缓存)、
commit提交(创建二级缓存)、update更新(销毁二级缓存,当前mapper文件里面的)
缓存的销毁图解
缓存的产生图解
二级缓存的产生条件
使用清楚策略 和 size参数的例子,如图
使用useCache 和 flushCache的例子,如图
二级缓存的配置参数
Size引用数目:缓存引用的最大时实例数,默认时1024。
注意:当缓存引用达到最大数目时,按照eviction设定的策略执行清除。
二级缓存的配置参数
清除策略
LRU 最近很少使用:一处最长时间不被使用的对象。-->LinkHaspMap
FIFO 先进先出:按对象进入缓存的顺序来移除它们。-->LinkedList
SOFT 软引用:基于GC和软引用规则移除对象。-->SoftReference
WEAK 弱引用:基于GC和弱引用规则移除对象-->WeakReference
二级缓存的配置参数
useCache 和 flushCache
useCache:设置当前Select方法是否产生缓存。
flushCache:设置当前Update方法是否清空缓存。
在tempMapper.xml的<select></select>或<update></update>中添加属性设置。
二级缓存的销毁
只有当i执行Update更新操作时,才能销毁二级缓存。
一级、二级缓存联合起来的工作原理图
当Session1执行close或commit时才写入二级缓存。
缓存的产生:
一级缓存:是执行了Select查询方法。
二级缓存:
满足一级缓存的产生条件
Closr Session 或者 Commit Session
mybatis中的eviction的清除策略
Mybatis的二级缓存的产生
mybatis eviction缓存清除策略
一级缓存的操作对二级缓存的影响,sqlsession的回滚和clearcache对二级缓存没有影响