二级缓存问题
老师好:请问开启了二级缓存后 commit提交时对该namespace缓存强制清空还会起作用吗?
为什么我这边演示commit打开/关闭后,缓存使用频率是一样的?
commit提交打开
[main] 15:37:42.399 DEBUG goods - Cache Hit Ratio [goods]: 0.3333333333333333
[main] 15:37:42.399 DEBUG goods - Cache Hit Ratio [goods]: 0.5
[main] 15:37:42.400 DEBUG goods - Cache Hit Ratio [goods]: 0.6
打印哈希值6750210:::6750210:::6750210
commit提交关闭
[main] 15:40:35.271 DEBUG goods - Cache Hit Ratio [goods]: 0.3333333333333333
[main] 15:40:35.271 DEBUG goods - Cache Hit Ratio [goods]: 0.5
[main] 15:40:35.271 DEBUG goods - Cache Hit Ratio [goods]: 0.6
打印哈希值6750210:::6750210:::6750210
@Test
public void testLV1Cache(){
SqlSession sqlSession=null;
try {
sqlSession=MybatilsUtils.openSession();
Goods goods=sqlSession.selectOne("goods.selectById",900);
Goods goods1=sqlSession.selectOne("goods.selectById",900);
//Goods goods3=sqlSession.selectOne("goods.selectById",900);
//Goods goods4=sqlSession.selectOne("goods.selectById",900);
System.out.println("打印哈希值"+goods.hashCode()+":::"+goods1.hashCode()); //":::"+goods3.hashCode()+":::"+goods4.hashCode());
} catch (Exception e) {
e.printStackTrace();
}finally {
MybatilsUtils.closeSession(sqlSession);
}
try {
sqlSession=MybatilsUtils.openSession();
Goods goods3=sqlSession.selectOne("goods.selectById",900);
// sqlSession.commit();//commit提交时对该namespace缓存强制清空
Goods goods4=sqlSession.selectOne("goods.selectById",900);
//sqlSession.commit();
Goods goods5=sqlSession.selectOne("goods.selectById",900);
System.out.println("打印哈希值"+goods3.hashCode()+":::"+goods4.hashCode()+":::"+goods5.hashCode());
} catch (Exception e) {
e.printStackTrace();
}finally {
MybatilsUtils.closeSession(sqlSession);
}
}正在回答
同学你好
开启二级缓存,执行 DML 操作(insert、update、delete),并commit提交了,会对该namespace缓存强制清空。
执行select时不会清空二级缓存。
注:为了同学的问题可以清晰定位,可以在提问时上传代码运行截图,并将疑问部分圈出哦。
祝学习愉快~
- 参与学习 人
- 提交作业 8790 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星