我对元素的“overflowToDisk”属性有一些疑问?
1)我在这个网址上读到:
overflowToDisk 设置当内存存储达到最大限制时元素是否可以溢出到磁盘。
上面的“内存”是指为运行 EHCACHE 的 Java 进程分配的 JVM 内存,或者是否有任何参数可以指定 Cache 内存大小?
2)当运行EHCACHE的poces由于某种原因终止时,是否该磁盘被清除并且缓存中的所有内容都消失了?
我对元素的“overflowToDisk”属性有一些疑问?
1)我在这个网址上读到:
overflowToDisk 设置当内存存储达到最大限制时元素是否可以溢出到磁盘。
上面的“内存”是指为运行 EHCACHE 的 Java 进程分配的 JVM 内存,或者是否有任何参数可以指定 Cache 内存大小?
2)当运行EHCACHE的poces由于某种原因终止时,是否该磁盘被清除并且缓存中的所有内容都消失了?
当内存存储中的元素数量超过maxElementsInMemory时,元素开始溢出到磁盘。下面的示例创建一个缓存,在内存中存储 1000 个元素,如果需要存储更多,磁盘上最多可存储 10000 个:
<cache name="cacheName"
maxElementsInMemory="1000"
maxElementsOnDisk="10000"
overflowToDisk="true"
timeToIdleSeconds="..."
timeToLiveSeconds="...">
</cache>
对于第二个问题,看一下diskPersistent参数。如果设置为 true,Ehcache 将在您停止 JVM 时将您的数据保存在磁盘上。以下示例演示了这一点:
<cache name="cacheName"
maxElementsInMemory="1000"
maxElementsOnDisk="10000"
overflowToDisk="true"
diskPersistent="true"
timeToIdleSeconds="..."
timeToLiveSeconds="...">
</cache>
从 Ehcache 2.6 开始,存储模型不再是溢出的,而是分层的。在分层存储模型中,所有数据将始终存在于最低层中。项目将根据它们的热度出现在更高的层中。
开源 Ehcache 的可能层是:
根据定义,高层比低层具有较低的延迟,但容量较小。
因此,对于配置了 的开源缓存overflowToDisk
,所有数据将始终位于磁盘层内。它将密钥存储在内存中,数据存储在磁盘上。
从另一个问题复制的答案。