一级缓存:默认开启
1,为什么要一级缓存
减少对数据库的访问压力
2,一级缓存有什么问题?
public void query(){
SqlSesion sqlsesion;
sqlsession.selectOne();
//在这之间被update,下面会出现脏数据
sqlsession.selectOne();命中缓存 内存
}
为什么还这么设计?这样写的概率很低
二级缓存
默认是关闭,也不建议使用,一般用Redis第三方实现
1.Scope:基于namespace
2.怎么验证二级缓存的存在?
3.二级缓存有什么问题?
a容易出现脏数据(关联查询A,B 在A的mapper中修改B数据,B中的二级缓存就是脏数据)
b全部失效
更新策略update,delete 会删除所有的二级缓存
网友评论