我正面临着ehcache的问题,我已经设置了我的缓存是永恒的,我正在逐步弹出JVM到#34;没有停机时间",这实际上没有清除我的ehcache并重新加载新对象..
<cache name="SampleServerStartupCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true" maxElementsOnDisk="10000000"
diskPersistent="false" memoryStoreEvictionPolicy="LRU" diskExpiryThreadIntervalSeconds="120" />
我确信当缓存设置为永久=&#34; true&#34;重启JVM应该刷新并加载新对象。但是为了避免停机,我们一个接一个地弹跳JVM,这是一个干净的重启之间的区别吗?
答案 0 :(得分:0)
eternal="true"
仅表示元素不会从缓存中过期。它对JVM重启时元素的生命周期没有影响。
如果您希望缓存元素的持久性,则需要设置diskPersistent="true"
,在配置文件中定义磁盘路径。在弹回JVM时,您还必须正确关闭CacheManager
,否则在重新启动时可能会丢弃保存在磁盘上的数据。
在评论后添加
在您的方案中,重新启动JVM将清除其缓存。但是只有在应用程序放入缓存时才会加载缓存。 Ehcache未配置为执行预加载。如果这是您想要的,请查看BootstrapCacheLoader
上的文档。