2012-09-07 46 views
1

我想問一下,如果有人知道JAVA緩存框架具有以下屬性:的Java緩存框架

  • 我有大的數據文件(2MB高達5GB),這是我需要的,如果內存連載按需增加和反序列化它們。

  • 末最近使用的策略

  • 我要處理我自己的序列化/ deserializtion,這意味着我只是想從框架知道什麼時候我必須序列。反序列化是根據用戶的需求。

  • 我想有最小的IO,因爲我有大數據

如果對此沒有直接的框架,也許你可以點我到heuristik或任何其他策略? SoftReferences/WeakReference作爲解決方案不起作用,因爲我無法序列化,即使我們在垃圾收集時發現它們(對於序列化留下更少的內存,甚至更糟糕:文件在序列化之前就已經消失了)。

謝謝!

+1

可能是重複的[寫入緩存](http://stackoverflow.com/questions/8431969/how-to-implement-a-write-cache-that-swaps-data-to-disk -only-when-free-memory-is) – Durandal

回答

4

嘗試Ehcache。 Ehcache是​​一個開源的基於標準的緩存,用於提高性能,卸載數據庫並簡化可伸縮性。的Ehcache是​​強大的,經過驗證的全功能,這使它成爲最廣泛使用的基於Java的緩存

+0

Ehcache是​​不是專門用作數據庫的緩存而不是仲裁數據? – Durandal

+0

ehcache可以很好地處理任何數據(複雜的結構 - 我緩存對象列表等) –

4

(免責聲明 - 我對GigaSpaces的工作)

GigaSpaces的XAP DataGrid提供了一個完整的面向對象的Java緩存解決方案。

  • Storage type - 不同的存儲類型可以分配給不同的數據部分。另外XAP支持Extrenal Data Source集成,如DB和NoSQL,以允許卸載大數據。
  • Eviction policy - 可以設置不同的搬遷政策,包括LRU
  • 存儲類型使用Java序列化,因此可以實現Externalizable並獲得完全控制權。
  • XAP在使用網絡資源和IO方面非常高效。
+0

好的,任何人沒有任何興趣銷售他的軟件?我需要這個開源項目。在後臺沒有數據庫。 – user1654885

1

JCache API在公開草案中(截至2013年8月),並將附帶開源參考實現(RI)。所有主要的高速緩存供應商(例如Oracle Coherence,ehCache)和開源項目都將爲他們的實現提供JCache綁定,因此值得一看。

參見:https://github.com/jsr107

更新(2014 7月11日) - 該API的JCache完成併發布了數個月前,是一個標準。

如果您需要JCache的實施,那麼我現在唯一知道的是Oracle Coherence;請參閱:http://docs.oracle.com/middleware/1213/coherence/develop-applications/jcache_part.htm

爲了充分披露,我在Oracle工作。本文所表達的意見和觀點屬於我自己的觀點,並不一定反映我的僱主的意見或看法。

+0

什麼是最輕的'javax.cache'提供程序?我的應用程序將永遠不會在羣集,遠程緩存等工作。所有「在RAM」和簡單的文件緩存庫我找到沒有實現'javax.cache'。我有知識,即使用ehcache,但許多MB安裝(以及配置,日誌活動等)對於小型桌面應用程序來說是可怕的。 –

+0

看一下jcache的參考實現.. https://github.com/jsr107/RI – cpurdy

0

檢查Redis - Redis是一個開源的,BSD許可的高級鍵值存儲。它通常被稱爲數據結構服務器,因爲密鑰可以包含字符串,哈希,列表,集合和有序集合。有關更多詳細信息,請單擊Redis