2012-02-07 34 views
1

我使用一個系統進行大量的批處理。我們有預加載的高速緩存來幫助提高數據查找性能。但是有些場景我不能將整個數據集緩存到內存中。到目前爲止,我已經恢復運行一個查詢來查找殺死性能的數據。爲了解決這個問題,我添加了一個混合緩存,其中我使用HashMap達到閾值,然後將其轉移到Lucene索引(本地文件系統)。與運行查詢相比,這是一個明顯的改進(比數據庫查詢快6到10倍)。然而,我希望有一點更好,並想知道是否有更好的選擇這種事情。我使用一個字符串作爲我的密鑰並且正在緩存Java對象。我想堅持一個Java庫,不會使我的部署複雜化。 (我想避免一個單獨的服務器進程。)我想知道是否有其他人使用Lucene來達到這個目的。有更好的選擇嗎?Lucene作爲高容量緩存?

回答

1

我認爲,如果您使用單個字符串作爲鍵並且不需要在存儲的數據中運行查詢,則可以使用Google的LevelDB。它具有良好的性能和低內存使用率。檢查此:http://code.google.com/p/leveldb/

1

有幾個緩存庫可用,應該能夠處理您的情況通過寫入緩存項到磁盤,如果達到一定的閾值。一個好的策略是將條目寫入租用訪問的磁盤。還有一些緩存將緩存條目分佈到集羣中,將所有內容都保存在內存中。

,我經常使用的高速緩存解決方案的Infinispan:http://www.jboss.org/infinispan

它是快速,易於使用,可擴展,當然可以處理你的問題。

+0

謝謝。我會檢查一下。 – kturner75 2012-02-07 16:50:52

1

EhCache!似乎很適合我需要的東西。對於這種單鍵查找,它比Lucene的表現要好得多。它支持磁盤溢出並且使用簡單。