我對元素的「overflowToDisk」屬性有一些疑問嗎?當在EHCACHE中overFlowToDisk被激活時?
overflowToDisk設置元素是否可以溢出到磁盤時存儲器存儲已達到最大限制:
1)I在此URL讀取。
上面的「內存」是指爲運行EHCACHE的Java進程分配的JVM內存,還是有指定高速緩存大小的任何參數?
2)當由於某種原因運行EHCACHE的終端終止時,該磁盤是否被清除並且緩存中的所有內容都會消失?
我對元素的「overflowToDisk」屬性有一些疑問嗎?當在EHCACHE中overFlowToDisk被激活時?
overflowToDisk設置元素是否可以溢出到磁盤時存儲器存儲已達到最大限制:
1)I在此URL讀取。
上面的「內存」是指爲運行EHCACHE的Java進程分配的JVM內存,還是有指定高速緩存大小的任何參數?
2)當由於某種原因運行EHCACHE的終端終止時,該磁盤是否被清除並且緩存中的所有內容都會消失?
當您在存儲器中有超過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>
從Ehcache 2.6開始,存儲模型不再是溢出數據,而是分層存儲模型。在分層存儲模型中,所有數據將始終存在於最低層層中。項目將根據他們的熱度以更高層次呈現。
開源的Ehcache可能的層有:
根據定義高層次具有較低的延遲但比較低層的容量更小。
因此,對於配置爲overflowToDisk
的開源緩存,所有數據將始終位於磁盤層內。它會將密鑰存儲在內存中,並將數據存儲在磁盤上。
從this other question複製的答案。