2010-09-05 73 views
8

我對元素的「overflowToDisk」屬性有一些疑問嗎?當在EHCACHE中overFlowToDisk被激活時?

overflowToDisk設置元素是否可以溢出到磁盤時存儲器存儲已達到最大限制:

1)I在此URL讀取。

上面的「內存」是指爲運行EHCACHE的Java進程分配的JVM內存,還是有指定高速緩存大小的任何參數?

2)當由於某種原因運行EHCACHE的終端終止時,該磁盤是否被清除並且緩存中的所有內容都會消失?

回答

9

當您在存儲器中有超過maxElementsInMemory時,元素開始溢出到磁盤。下面的示例創建存儲在內存1000元的高速緩存,並且,如果你需要存儲更多,高達10000上盤:

<cache name="cacheName" 
     maxElementsInMemory="1000" 
     maxElementsOnDisk="10000" 
     overflowToDisk="true" 
     timeToIdleSeconds="..." 
     timeToLiveSeconds="..."> 
</cache> 

對於第二個問題,看看在diskPersistent參數。如果它設置爲true,那麼當您停止JVM時,Ehcache將保留您的數據存儲在磁盤上。以下示例演示了這一點:

<cache name="cacheName" 
     maxElementsInMemory="1000" 
     maxElementsOnDisk="10000" 
     overflowToDisk="true" 
     diskPersistent="true" 
     timeToIdleSeconds="..." 
     timeToLiveSeconds="..."> 
</cache> 
3

從Ehcache 2.6開始,存儲模型不再是溢出數據,而是分層存儲模型。在分層存儲模型中,所有數據將始終存在於最低層層中。項目將根據他們的熱度以更高層次呈現。

開源的Ehcache可能的層有:

  • 在堆是在JVM堆
  • 磁盤上的這是最低的一個

根據定義高層次具有較低的延遲但比較低層的容量更小。

因此,對於配置爲overflowToDisk的開源緩存,所有數據將始終位於磁盤層內。它會將密鑰存儲在內存中,並將數據存儲在磁盤上。

this other question複製的答案。