我对元素的“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复制的答案。