2014-11-22 58 views
-1

Java緩存庫如何用作數據庫?作爲數據庫的Java緩存?

我使用類似EhcacheJCS而不是數據庫?

難道Ehcache僅支持Enterprise Ehcache(即付費版本)的持久性策略= localRestartable嗎?

這是否意味着免費版本不適合數據庫更換?

UPDATE

爲什麼不是持久的緩存數據庫替換?數據庫引擎操作和使用遠程存儲的高速緩存操作之間的主要區別是什麼?

下面是neo4j(圖形數據庫)和Ehcache(緩存)之間的比較示例:http://vschart.com/compare/ehcache/vs/neo4j-community它們看起來相當。

+0

緩存不是數據庫。即使持久性緩存不是數據庫。如果您堅持將其視爲數據庫,您將失去應用程序數據。改用NoSQL鍵值存儲。 – 2014-11-22 20:03:02

+0

爲什麼不持久緩存數據庫替換? – 2014-11-22 21:47:28

+0

我已經回答了你和你的意見,你仍然只是重複「但我確定我是對的」。下調,因爲如果你確定你不應該問問題。試試你的*明亮的想法,看看它是如何工作的,然後回到這裏來回答自己發生了什麼。 – SJuan76 2014-11-23 12:28:35

回答

1

緩存是一種應用程序組件,它可以增加內存使用量,以降低數據訪問的延遲。它通常有一個驅逐的概念,加上假設它擁有可以從別處查詢或重建的數據。

這兩個概念組合允許緩存實現者在他們認爲合適的任何時候從緩存中刪除條目,用於限制緩存資源利用率,以支持具有更頻繁訪問模式的條目或僅僅不具有緩存的條目延遲時間增加的原因。

這是緩存不應該用作數據存儲的主要原因。

現在一些緩存實現可能會提供防止驅逐的功能,但在這種情況下,您最終會付出驅逐邏輯/複雜性的代價,而這些價格不會出現在數據存儲中。

關於Ehcache持久性,傳統模式overflowToDisk=truediskPersistent=true提供有限的「存活JVM重啓」持久性。然而,它對正常關機非常敏感,並且在啓動時檢測到任何損壞後,緩存將丟棄所有內容並重新啓動爲空。請參閱上文爲什麼這是緩存上下文中的有效選項。