通常,当Ehcache缓存中的条目超过其ttl / tti时,它将被标记为陈旧。然后,当要求缓存返回此陈旧条目时,该条目将被删除,并且缓存将返回null。调用方法将必须转到数据存储,以获取新条目以存储在缓存中。
在我的用例中,如果数据存储出现故障,则返回陈旧数据要比不返回数据更好。问题是,当我进行数据存储调用以检查它是否启动时,我的陈旧条目已被删除。
在某些布尔条件下(即DatastoreMonitor返回isDown),有什么方法可以指示Ehcache有目的地返回过时的数据吗?
答案 0 :(得分:0)
最后,我实现了自己的ConditionallyStaleCache extends Object
。构造函数采用三个参数-shortTermCache
,backUpCache
和Dao
。我本人实现了所有的“如果Dao关闭,然后从备份返回”逻辑,因为我认为EhCache不可能为我执行此逻辑。
我很想知道是否有更好的方法,但这是我目前使用的方法。