1、什么是缓存(内存技术)
-
存在内存中的零时数据。
-
将用户经常查询的信息放在缓存中,用户查询这些 数据的时候不需要去磁盘中读取,而从缓存中读取,从而提高查询效率,解决了高并发性能问题。
2、为啥要用缓存
-
减少和数据库的交互次数,减少系统开销,提高系统效率。
3、什么样的数据可以使用缓存?
-
经常查询且不经常修改的数据。
4、一级缓存
在mybatis中自动的开启的,采用的测略是lru原则,就是最长时间不被使用的将会被清除。
5、二级缓存
- 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:
<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>
这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的,因此对它们进行修改可能会在不同线程中的调用者产生冲突。
- LRU – 最近最少使用:移除最长时间不被使用的对象。
- FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
- SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
- WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。 默认的清除策略是 LRU。
cacheEnabled 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 true | false true
**<setting name="cacheEnabled " value="true"/>**
小结
只要开启了二级缓存,在同一个mapper下有效
所有的数据都会先放在一级缓存中
只有当会话提交,或者关闭的时候,才会提交的二级缓存中。