㈠ Spring本地緩存的使用方法
我們現在在用的Spring Cache,可以直接看Spring Boot提供的緩存枚舉類,有如下這些:
EhCache:一個純Java的進程內緩存框架,所以也是基於本地緩存的。(注意EhCache2.x和EhCache3.x相互不兼容)。
Redis:分布式緩存,只有Client-Server(CS)模式,Java一般使用Jedis/Luttuce來操縱。
Hazelcast:基於內存的數據網格。雖然它基於內存,但是分布式應用程序可以使用Hazelcast進行分布式緩存、同步、集群、處理、發布/訂閱消息等。
Guava:它是Google Guava工具包中的一個非常方便易用的本地化緩存實現,基於LRU(最近最少使用)演算法實現,支持多種緩存過期策略。在Spring5.X以後的版本已經將他標記為過期了。
Caffeine:是使用Java8對Guava緩存的重寫版本,在Spring5中將取代了Guava,支持多種緩存過期策略。
SIMPLE:使用ConcurrentMapCacheManager,因為不支持緩存過期時間,所以做本地緩存基本不考慮該方式。
關於分布式緩存,我們需要後面會專門討論Redis的用法,這里只看本地緩存。性能從高到低,依次是Caffeine,Guava,ConcurrentMapCacheManager,其中Caffeine在讀寫上都快了Guava近一倍。
這里我們只討論在Spring Boot裡面怎麼整合使用Caffeine和EhCache。
主要有以下幾個步驟:
1)加依賴包:
2)配置緩存:
這里有兩種方法,通過文件配置或者在配置類裡面配置,先看一下文件配置,我們可以寫一個properties文件,內容像這樣:
然後還要在主類中加上@EnableCaching註解:
另外一種更靈活的方法是在配置類中配置:
應用類:
測試類:
導入依賴包,分為2.x版本和3.x版本。
其中2.x版本做如下導入:
3.x版本做如下導入:
導包完成後,我們使用JCacheManagerFactoryBean + ehcache.xml的方式配置:
參考資料:
https://blog.csdn.net/f641385712/article/details/94982916
http://www.360doc.com/content/17/1017/20/16915_695800687.shtml
㈡ java 分布式緩存框架有哪些
Ehcache
Ehcache 是一個Java實現的開源分布式緩存框架,EhCache 可以有效地減輕資料庫的負載,可以讓數據保存在不同伺服器的內存中,在需要數據的時候可以快速存取。同時EhCache 擴展非常簡單,官方提供的Cache配置方式有好幾種。你可以通過聲明配置、在xml中配置、在程序里配置或者調用構造方法時傳入不同的參數。
特點:
存取速度非常快,性能很不錯。
可以應用多種緩存策略。
分級緩存,用戶可以指定哪些數據在硬碟中緩存,哪些數據在內存中緩存。
可以通過RMI、可插入API等方式進行分布式緩存。
具有緩存和緩存管理器的偵聽介面。
支持多緩存管理器實例,以及一個實例的多個緩存區域。
默認提供Hibernate的緩存實現
㈢ Java本地緩存有哪些
下面給你介紹幾個常見的java緩存框架:
1、OSCache
OSCache是個一個廣泛採用的高性能的J2EE緩存框架,OSCache能用於任何Java應用程序的普通的緩存解決方案。
OSCache有以下特點:
緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
永久緩存--緩存能隨意的寫入硬碟,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啟。
支持集群--集群緩存數據能被單個的進行參數配置,不需要修改代碼。
緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
2、Java Caching System
JSC(Java Caching System)是一個用分布式的緩存系統,是基於伺服器的java應用程序。它是通過提供管理各種動態緩存數據來加速動態web應用。
JCS和其他緩存系統一樣,也是一個用於高速讀取,低速寫入的應用程序。
動態內容和報表系統能夠獲得更好的性能。
如果一個網站,有重復的網站結構,使用間歇性更新方式的資料庫(而不是連續不斷的更新資料庫),被重復搜索出相同結果的,就能夠通過執行緩存方式改進其性能和伸縮性。
3、EHCache
EHCache 是一個純java的在進程中的緩存,它具有以下特性:快速,簡單,為Hibernate2.1充當可插入的緩存,最小的依賴性,全面的文檔和測試。
4、JCache
JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。
5、ShiftOne
ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Java lib,就像一個輕量級的配置緩存工作狀態的框架。
6、SwarmCache
SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。
SwarmCache使用JavaGroups來管理從屬關系和分布式緩存的通訊。
㈣ java web緩存方案 ehcache
性能恐怕還不如你現在用靜態map的方案。因為正如你所說,你現在數據量不大,不經常改變,結構也很簡單,既然如此又何必用第三方緩存框架呢。二者本質上沒有什麼不同,都是從內存訪問數據而已,框架可能能設置緩存有效期,更新策略,層級結構等東西,但你目前的需求用不到這些啊。