Ehcache:如何有条件地 return 陈旧数据

Ehcache: How to conditionally return stale data

通常,当 Ehcache 缓存中的条目超过其 ttl/tti 时,它将被标记为陈旧。然后,当请求缓存 return 这个陈旧的条目时,条目将被删除并且缓存将 return 为空。调用方法必须前往数据存储区以获取新条目以存储在缓存中。

在我的用例中,如果数据存储出现故障,return 陈旧数据比 return 没有数据更好。问题是,当我调用数据存储来检查它是否启动时,我的陈旧条目已经被删除了。

有什么方法可以指示 Ehcache 在某些布尔情况下有目的地 return 陈旧数据(即 DatastoreMonitor returns isDown)?

最后,我实现了自己的ConditionallyStaleCache extends Object。构造函数采用三个参数 - shortTermCachebackUpCacheDao。我自己实现了所有的"if the Dao is down then return from backup"逻辑,因为我认为EhCache不可能为我做这个逻辑。

我很想知道是否有更好的方法,但这就是我现在使用的方法。