【redis】 mybatis的一级、二级缓存、mybatis分布式缓存

Mybatis的一级缓存: SqlSession将 查询语句 查到的数据保存到缓存中,相同的sql语句与参数会直接去缓存中读取,增删改会清除缓存

Mybatis的二级缓存:以 namespace 为标识建立缓存,同一namespace下,相同的sql语句与参数会直接去缓存中读取,增删改会清除缓存

 

注意:但是不建议使用Mybatis的二级缓存。

举例:mapperA是由namespaceA管理的,mapperB是由namespaceB管理的,这两个mappper都操作了表user,如果两个namespace都已经存在查询user结果的二级缓存,当mapperA对user表进行了insert、update、delete操作时,会把namespaceA的二级缓存清掉,但是namespaceB还存在着二级缓存,如果此时namespaceB的二级缓存被调走了,那么就会出现数据脏读。

 

解决: 

 

优化

 

相关问题

mybatis让没有结果的查询也缓存一个null值

让各种缓存的超时时间错开

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值