如果LoaderWriter失败,则使Ehcache返回过期的数据

时间:2018-11-26 09:21:49

标签: ehcache ehcache-3

是否可以通过以下方式设置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();

1 个答案:

答案 0 :(得分:0)

不可能。但是,除非您使用复印机,否则它不是您要保留在装载机/刻录机中的副本。它只是对缓存中对象的另一个引用。

您的请求可以作为增强功能提交到Ehcache issue tracker中。

另一种选择是永不使数据过期,而在需要时从外部替换数据。