目的:提升查询效率和减少数据库的压力!
一级缓存
1、也叫本地缓存,在会话层面sqlsession进行缓存的。默认开启的,不需要配置,也不能关闭。
2、同一个会话中,update、delete、insert?会清空一级缓存。
3、问题:不同的会话之间对于相同的数据,可能有不同的缓存。在有多个会话,或者分布式的情况下,会存在脏数据。
二级缓存
用来解决一级缓存不能跨会话共享的问题,范围是namespace级别,可以被多个sqlsession共享。
1、开启方式
<setting name="cacheEnabled" value="true" />
2、先获取二级缓存,获取不到再获取一级缓存
3、select之后必须提交事务,才能写入二级缓存
4、执行update、delete、insert后,使得缓存失效(namespace级别的失效)
5、适用于查询为主的应用;一表一namespace
参考博客: https://yzhyaa.blog.csdn.net/article/details/111186410