簡體   English   中英

何時使用Ehcache和Hash映射來緩存數據?

[英]When to use Ehcache and Hash map for caching data?

我有課程,其中定義了主要方法。 當我運行這個類時,它會從帳戶表中加載帳戶數據並在我的主類中填充一個全局變量。 現在我的項目中的要求是,可以在飛行中更新帳戶表。 為了處理這個問題,我訂閱了帳戶表上最后更新的時間戳,並用它來檢查哈希表中的數據是否是最新的。

建議在這里使用hashMap嗎? 在我的主程序中使用ehcache或hashmap是不一樣的。 兩者都在我的JVM中占用相同的空間。 我試圖了解何時在java程序中使用hashMap以及何時使用Ehcache

HashMap不是並發的。 所以你無法更新它。 ConcurrentHashMap是。 所以你想要那個。

Ehcache(on-heap)是一個ConcurrentHashMap具有到期和驅逐處理功能。

它也符合JSR107標准,因此可以更輕松地使用許多框架進行透明緩存。

但是如果你知道你的地圖中會有多少元素。 而且你知道它們永遠不會過期,除非你替換它們,然后ConcurrentHashMap會做你需要的。

最重要的是,Ehcache是​​一個增強的ConcurrentHashMap

使用EhCache,因為它可以像HashMap一樣工作,同時可以更改它的配置。

雖然數據集很小,但將它完全加載到內存(HashMap)中可能是可行的,否則你必須決定要為它分配多少內存,而你必須保留一些其他內容。

這就是EhCache派上用場的地方:

  • 可配置的大小(在緩存條目中)
  • 保留“最有用”的條目(取決於使用的算法)
  • 可能會在磁盤上存儲一些條目
  • 支持TTL(生存時間),TTI(空閑),相同的磁盤,基本上如果不使用條目,緩存不占用任何空間
  • 支持群集
  • 適合更大的應用程序
  • 等等

而HashMap:

  • 將所有內容保存在內存中
  • 可以簡單易用
  • 好的簡單程序

有時,緩存包含不是最新的數據(在沒有應用程序知識的情況下操作bug或DB)。 如果沒有清理機制,HashMap將保留該數據。 雖然EhCache有機會(TTL,TTI)刪除它並在必要時加載最新數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM