是否可以通过以下方式设置Ehcache:如果基础CacheLoaderWriter失败(引发异常),则缓存将返回“过期”数据?
根据我的测试,如果给定的缓存条目已过期,并且CacheLoaderWriter无法加载数据,则缓存返回null。
但是,就我而言,返回过期的缓存数据总比没有返回好。解决方法是将最新成功加载的数据存储在CacheLoaderWriter中,因此,如果新执行的加载失败,我将返回此副本。无论如何,以某种方式返回内存中已经存在的数据,而不是将另一个副本保留在CacheLoaderWriter中,将认为这是“内存有效”的。
我正在使用ehcache 3.4.0
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("myCacheName",
CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, String.class, ResourcePoolsBuilder.heap(100))
.withExpiry(Expirations.timeToLiveExpiration(Duration.of(4, TimeUnit.HOURS)))
.withLoaderWriter(new TestCacheLoaderWriter()))
.build();
答案 0 :(得分:0)
不可能。但是,除非您使用复印机,否则它不是您要保留在装载机/刻录机中的副本。它只是对缓存中对象的另一个引用。
您的请求可以作为增强功能提交到Ehcache issue tracker中。
另一种选择是永不使数据过期,而在需要时从外部替换数据。