【问题标题】:When overFlowToDisk gets activated in EHCACHE?在 EHCACHE 中何时激活 overFlowToDisk?
【发布时间】:2011-04-08 09:23:57
【问题描述】:

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

1) 我在URL 看到:

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

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

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

【问题讨论】:

    标签: caching ehcache second-level-cache


    【解决方案1】:

    当内存存储中的元素超过 ma​​xElementsInMemory 时,元素开始溢出到磁盘。以下示例创建了一个缓存,可在内存中存储 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>
    

    【讨论】:

      【解决方案2】:

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

      开源 Ehcache 的可能层是:

      • JVM 堆上的堆上
      • 磁盘上最低的一个

      根据定义,高层的延迟较低,但容量低于较低的层。

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

      this other question复制答案。

      【讨论】:

        猜你喜欢
        • 2012-05-31
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多