在EHCACHE中激活overFlowToDisk时?

Vic*_*cky 10 caching ehcache second-level-cache

我对元素的"overflowToDisk"属性有一些疑问?

1)我在这个URL上读到:

overflowToDisk设置当内存存储达到最大限制时元素是否可以溢出到磁盘.

上面的"内存"是指为运行EHCACHE的Java进程分配的JVM内存,还是有任何参数指定Cache内存大小?

2)当运行EHCACHE的poces由于某种原因终止时,是否该磁盘被清除并且缓存中的所有内容都消失了?

can*_*iru 12

当内存存储中的元素超过maxElementsInMemory时,元素开始溢出到磁盘.以下示例创建一个缓存,在内存中存储1000个元素,如果需要存储更多元素,则在磁盘上最多可存储10000个元素:

<cache name="cacheName"
       maxElementsInMemory="1000"
       maxElementsOnDisk="10000"
       overflowToDisk="true"
       timeToIdleSeconds="..."
       timeToLiveSeconds="...">
</cache>
Run Code Online (Sandbox Code Playgroud)

对于第二个问题,请查看diskPersistent参数.如果设置为true,Ehcache将在您停止JVM时将数据保存在磁盘上.以下示例演示了这一点:

<cache name="cacheName"
       maxElementsInMemory="1000"
       maxElementsOnDisk="10000"
       overflowToDisk="true"
       diskPersistent="true"
       timeToIdleSeconds="..."
       timeToLiveSeconds="...">
</cache>
Run Code Online (Sandbox Code Playgroud)


Lou*_*met 5

从 Ehcache 2.6 开始,存储模型不再是溢出模型而是分层模型。在分层存储模型中,所有数据将始终存在于最低层中。物品将根据它们的热度出现在更高的等级中。

开源 Ehcache 的可能层是:

  • JVM 堆上的堆上
  • 在磁盘上是最低的

根据定义,与较低层相比,高层具有较低的延迟但容量较小。

因此,对于配置了 的开源缓存overflowToDisk,所有数据将始终位于磁盘层内。它将密钥存储在内存中,并将数据存储在磁盘上。

另一个问题复制的答案。