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有最基本的緩存特性,很輕。大家根據具體情況選擇使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM