无废话mybatis八(缓存)

只需要看一篇文章就能对mybatis缓存理解的很好, 所以无需多言,点击下列链接

https://tech.meituan.com/mybatis_cache.html

上面文章的总结:
1, MyBatis的二级缓存相对于一级缓存来说,实现了SqlSession之间缓存数据的共享,同时粒度更加的细,能够到namespace级别,通过Cache接口实现类不同的组合,对Cache的可控性也更强。
2, MyBatis在多表查询时,极大可能会出现脏数据,有设计上的缺陷,安全使用二级缓存的条件比较苛刻。
3,在分布式环境下,由于默认的MyBatis Cache实现都是基于本地的,分布式环境下必然会出现读取到脏数据,需要使用集中式缓存将MyBatis的Cache接口实现,有一定的开发成本,直接使用Redis,Memcached等分布式缓存可能成本更低,安全性也更高。

个人认知:

mybaits默认查询都是有缓存,其默认缓存是在session里面完成的 , 顾名思义一就是内存,所以下列为个人认知
1,有的时候由于所谓的缓存会出现各种坑爹的问题, 所以我个人认知是: 如果要用多个mybatis连接做读写分离, 那还是禁用的好

禁用一级缓存:


flushCache="true"表示每次查询刷新缓存

打开二级缓存



2, mybatis缓存并非一无是处, mybatis的缓存是默认在查询的时候存在, 在insert, update, delete的时候删除, 所以如果不是用多个连接做读写分离是很有好处的 , 包括二级缓存

3, 如果禁用一级缓存的话每次都从数据库里进行查询, 所以为了提升系统效率很多时候都会用到redis之类的kv数据库, 所以很好的替换mybatis缓存的问题

4, 如上个人认为来说还是禁用了吧

你可能感兴趣的:(无废话mybatis八(缓存))