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中。