是否可以设置 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();