Ehcache與Guava Cache的區別淺談

最近在作一些緩存改造的場景,有以下一些經驗總結:緩存

緩存版本:工具

Ehcache:2.8.3
Guava:17.0對象

  1. Ehcache支持持久化到本地磁盤,Guava不能夠;
  2. Ehcache有現成的集羣解決方案,Guava沒有。不過我的感受比較雞肋,對JVM級別的緩存來說過重了;
  3. Ehcache jar包龐大,Guava Cache只是Guava jar包中的工具之一,並且後者遠遠小於Ehcache;
  4. 兩種緩存當緩存過時或者沒有命中的時候均可以經過load接口重載數據,調用方式略有不一樣。二者的主要區別是Ehcache的緩存load的時候,容許用戶返回null,而Guava Cache則不容許返回爲null,由於Guava Cache是根據value的值是否爲null來判斷是否須要load,因此不容許返回爲null,可是使用的時候可使用空對象替換。不容許返回null是一個很好的考慮;
  5. Ehcache有內存佔用大小統計,Guava Cache沒有,須要本身開發;
  6. Ehcache在put緩存的時候,對K、V都作了包裝,對GC有必定影響。

何時適用Ehcache、何時適用Guava cache?接口

首先,二者都是很成熟的JVM級別緩存,因此在絕大多數狀況都是能夠知足要求的。內存

適用Ehcache的狀況開發

  1. 須要持久化持久化。使用持久化功能須要,緩存穩定,以避免持久化的數據不許確影響結果。
  2. 有集羣解決方案。

適用Guava cache的狀況
Guava cache說簡單點就是一個支持LRU的ConCurrentHashMap,它沒有Ehcache那麼多的各類特性,只是提供了增、刪、改、查、刷新規則和時效規則設定等最基本的元素。作一個jar包中的一個功能之一,Guava cache極度簡潔並能知足覺大部分人的要求。集羣

總結
Ehcache有着全面的緩存特性,可是略重。Guava cache有最基本的緩存特性,很輕。你們根據具體狀況選擇使用。統計

相關文章
相關標籤/搜索