Mybatis自己是一个持久层框架,它不是专门的缓存框架,因此它对缓存的实现不够好,不能支持分布式。缓存
Ehcache是一个分布式的缓存框架。mybatis
系统为了提升性能,一般会对系统采用分布式部署(集群部署方式)app
Cache是一个接口,它的默认实现是mybatis的PerpetualCache。若是想整合mybatis的二级缓存,那么实现Cache接口便可。框架
的type值为ehcache的实现类jvm
在src下添加ehcache的配置文件 分布式
![]()
|
memoryStoreEvictionPolicy - 当内存缓存达到最大,有新的element加入的时候, 移除缓存中element的策略。性能
flashInterval:设置刷新时间(清空缓存)测试 默认是LRU(最近最少使用),可选的有LFU(最不常使用)和FIFO(先进先出)spa |
使用场景:对于访问响应速度要求高,可是实时性不高的查询,能够采用二级缓存技术。线程
注意:在使用二级缓存的时候,要设置一下刷新间隔(cache标签中有一个flashInterval属性)来定时刷新二级缓存,这个刷新间隔根据具体需求来设置,好比设置30分钟、60分钟等,单位为毫秒。
Mybatis二级缓存对细粒度的数据,缓存实现很差。
场景:
对商品信息进行缓存,因为商品信息查询访问量大,可是要求用户每次查询都是最新的商品信息,此时若是使用二级缓存,就没法实现当一个商品发生变化只刷新该商品的缓存信息而不刷新其余商品缓存信息,由于二级缓存是mapper级别的,当一个商品的信息发送更新,全部的商品信息缓存数据都会清空。
解决此类问题,须要在业务层根据须要对数据有针对性的缓存。
好比能够对常常变化的 数据操做单独放到另外一个namespace的mapper中。