重新启动 JVM 不会重新加载 ehcache 对象



我遇到了 ehcache 的问题,我已将缓存设置为永恒,并且我正在逐个反弹 JVM 的"没有停机时间",这实际上并没有清除我的 ehcache 并重新加载新对象。

<cache name="SampleServerStartupCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true" maxElementsOnDisk="10000000"
    diskPersistent="false" memoryStoreEvictionPolicy="LRU" diskExpiryThreadIntervalSeconds="120" />

我相信当缓存设置为 eternal="true" 时,JVM 的重新启动应该刷新并加载新对象。但是,为了避免停机,我们正在一个接一个地弹跳JVM,这会在干净重启之间产生差异吗?

eternal="true"仅表示元素不会从缓存中过期。它对 JVM 重新启动期间元素的生存期没有影响。

如果您希望缓存元素的持久性,则需要设置 diskPersistent="true" ,在配置文件中定义磁盘路径。在弹跳 JVM 时,还必须正确关闭CacheManager,否则保存在磁盘上的数据可能会在重新启动时被丢弃。

在评论后添加

在您的场景中,重新启动 JVM 将清除其缓存。但是,只有在应用程序放入缓存时,才会加载缓存。Ehcache 未配置为执行预加载。如果这是您想要的,请查看有关 BootstrapCacheLoader 的文档。

最新更新