【mybatis】mybatis整合ehcache
ehcache是一個分散式快取框架。
我們系統為了提高系統併發,效能、一般對系統進行分散式部署(叢集部署方式)
對快取資料進行集中管理(redis叢集) 使用分散式快取框架 redis、memcached、ehcache。。 |
不使用分佈快取,快取的資料在各各服務單獨儲存,不方便系統 開發。所以要使用分散式快取對快取資料進行集中管理。
mybatis無法實現分散式快取,故需要和其它分散式快取框架進行整合。
整合方法(掌握)
我們先來看mybatis預設的cache介面的實現類是什麼:
mybatis提供了一個cache介面,如果要實現自己的快取邏輯,實現cache介面開發即可。
mybatis預設實現的cache類是:
加入ehcache包
整合ehcache
cache介面的ehcache實現類是:
在mapperxml檔案<cache>標籤中配置type為cache介面的ehcache實現類。
加入ehcache的配置檔案
在classpath下配置ehcache.xml
二級應用場景
對於訪問多的查詢請求且使用者對查詢結果實時性要求不高,此時可採用mybatis二級快取技術降低資料庫訪問量,提高訪問速度,業務場景比如:耗時較高的統計分析sql、電話賬單查詢sql等。
實現方法如下:通過設定重新整理間隔時間,由mybatis每隔一段時間自動清空快取,根據資料變化頻率設定快取重新整理間隔flushInterval,比如設定為30分鐘、60分鐘、24小時等,根據需求而定。
二級快取侷限性
mybatis二級快取對細粒度的資料級別的快取實現不好,比如如下需求:對商品資訊進行快取,由於商品資訊查詢訪問量大,但是要求使用者每次都能查詢最新的商品資訊,此時如果使用mybatis的二級快取就無法實現,當一個商品變化時只重新整理該商品的快取資訊而不重新整理其它商品的資訊,因為mybaits的二級快取區域以mapper為單位劃分,當一個商品資訊變化會將所有商品資訊的快取資料全部清空。解決此類問題需要在業務層根據需求對資料有針對性快取。