java - ehcache 磁盘存储中的元素不会过期

标签 java ehcache

我只想将元素缓存在磁盘存储中,而不是内存/RAM 中,为此我使用了以下配置,它将元素存储在磁盘上,但 5 分钟后不会过期/从磁盘中删除数据。

<diskStore path="/global-cache" />

<cache name="globalCache" 
       maxElementsInMemory="0"
       eternal="true" 
       timeToIdleSeconds="0" 
       diskSpoolBufferSizeMB="1"
       diskPersistent="true"
       timeToLiveSeconds="300" 
       diskExpiryThreadIntervalSeconds="120"
       overflowToDisk="true"
       memoryStoreEvictionPolicy="LFU" />

我可以在 ehcache 配置中做什么,以使磁盘存储中的元素在指定时间后过期?

最佳答案

你不能,如 documentation状态:

If an entry expires but is not accessed, and no resource constraints force eviction, then the expired entry remains in place.

即使某些约束会强制驱逐,Ehcache 也可能只删除部分过期条目,这样它就不需要扫描所有磁盘存储。 如果您绝对需要跟踪每个过期的条目,您将必须自己实现此功能,但这会影响您的性能。可能这就是 Ehcache 中未内置此功能的原因。

关于java - ehcache 磁盘存储中的元素不会过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822345/

相关文章:

java - 存储经常使用的(不可更改的)List、Map 的最佳方式是什么?

java - HIbernate 3.5.1 - 我可以直接加入 EHCache 2.0.1 吗?

java - Java 的 ASM 库可以实现这一点吗?

java - apache commons 中的 SynchronizedSet

java - tomcat 4节点中的ehcache实现

hibernate - 使用 Hibernate + Spring 缓存 - 一些问题

java - 使用 Java 在 Hibernate 中使用 Ehcache 获取最新数据

Kotlin 单表达式函数的 Java 签名

java - hibernate 还是 'Do-It-Yourself"?

java - 使用随机 int 的 ArrayIndexOutOfBoundsException