Ehcache:如何有条件地 return 陈旧数据
Ehcache: How to conditionally return stale data
通常,当 Ehcache 缓存中的条目超过其 ttl/tti 时,它将被标记为陈旧。然后,当请求缓存 return 这个陈旧的条目时,条目将被删除并且缓存将 return 为空。调用方法必须前往数据存储区以获取新条目以存储在缓存中。
在我的用例中,如果数据存储出现故障,return 陈旧数据比 return 没有数据更好。问题是,当我调用数据存储来检查它是否启动时,我的陈旧条目已经被删除了。
有什么方法可以指示 Ehcache 在某些布尔情况下有目的地 return 陈旧数据(即 DatastoreMonitor returns isDown)?
最后,我实现了自己的ConditionallyStaleCache extends Object
。构造函数采用三个参数 - shortTermCache
、backUpCache
和 Dao
。我自己实现了所有的"if the Dao is down then return from backup"逻辑,因为我认为EhCache不可能为我做这个逻辑。
我很想知道是否有更好的方法,但这就是我现在使用的方法。
通常,当 Ehcache 缓存中的条目超过其 ttl/tti 时,它将被标记为陈旧。然后,当请求缓存 return 这个陈旧的条目时,条目将被删除并且缓存将 return 为空。调用方法必须前往数据存储区以获取新条目以存储在缓存中。
在我的用例中,如果数据存储出现故障,return 陈旧数据比 return 没有数据更好。问题是,当我调用数据存储来检查它是否启动时,我的陈旧条目已经被删除了。
有什么方法可以指示 Ehcache 在某些布尔情况下有目的地 return 陈旧数据(即 DatastoreMonitor returns isDown)?
最后,我实现了自己的ConditionallyStaleCache extends Object
。构造函数采用三个参数 - shortTermCache
、backUpCache
和 Dao
。我自己实现了所有的"if the Dao is down then return from backup"逻辑,因为我认为EhCache不可能为我做这个逻辑。
我很想知道是否有更好的方法,但这就是我现在使用的方法。