本文承接[mybatis快取體系**],提供基於mybatisplus技術可用於生產環境下的二級快取解決方案。
1、前置條件
有關mybatis快取原理內容,參考[mybatis快取體系**]
本方案對mybatisplus版本有嚴格的限制,使用版本不低於3.4.3.4
,如果低於此版本,則無法滿足生產環境條件下的閉環需求。
正確的多表連線查詢,請參考[mybatisplus連線查詢解決方案]
2、目標與收穫
如果應用有分布式快取需求,那麼直接棄用二級快取的方案,直接選配業務層快取方案。
假如應用沒有分布式場景,那麼通過簡單改造,引入二級快取,能夠極大提高響應效率。
1、二級快取
選用mybatisplus來實現二級快取最大的考量是其使用的單錶操作,換而言之,正確的使用二級快取的前提是不能使用傳統意義上的多表連線操作,否則一定存在快取資料不能實時更新的情況。
2、快取資料更新
所有的快取資料必然涉及到資料更新,二級快取同樣需要主動更新資料。二級快取是以命名空間為單位的,換而言之同乙個命名空間內的資料更新會自動觸發快取更新(本質為資料失效)。查詢操作快取資料,增加、修改、刪除資料使快取失效。
自成體系的快取更新與管理在提高了應用響應速度的同時降低了快取管理的複雜度,有利於提高開發效率。
3、快取的區別
這裡提到的二級快取有必要與**快取(業務快取)做區分,二級快取指dao層快取,使用快取的目的是降低網路io對應用的影響;**快取指業務層快取,主要是降低複雜計算對cpu效能的占用。
對於普通專案,使用內建本地二級快取即能夠滿足需求,這裡以mybatisplus為例說明如何正確的使用二級快取。
1、兩套api
2、快取實現型別
預設二級快取實現型別為perpetualcache
,此中型別的快取要求被快取的物件實現序列化介面。其它型別的本地快取有ehcache、caffeine等。
hibernate二級快取
cacheconcurrencystrategy.none cacheconcurrencystrategy.read only 唯讀模式,在此模式下,如果對資料進行更新操作,會有異常 cacheconcurrencystrategy.read write 讀寫模式在更新快取的時候會把快取裡面的資料...
hibernate 二級快取
session快取 一級快取 sql查詢結果快取,由hibernate管理 sessionfactory內建快取,內建快取是hibernate自帶的,用於存放預定義的sql以及hbm.xml描述的元資料,不可解除安裝 sessionfactory外接快取 二級快取 由外部外掛程式提供,外接快取的資料...
Hibernate二級快取
hibernate的session在事務級別進行持久化資料的快取操作。當然,也有可能分別為每個類 或集合 配置集群 或jvm級別 sessionfactory級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...