刷新缓存时保留旧值?
Retain old value when refreshing cache?
我创建了一个配置了 refreshAfterWrite 的 Caffeine AsyncLoadingCache。对于给定的键,如果一个值已经加载到缓存中并且在刷新期间出现错误,则 key/value 将被删除。相反,我想保留旧值并更新到期时间戳,这样它就不会立即再次刷新。有没有办法配置此行为?
您可以实施任一 CacheLoader.reload(key, oldValue) or AsyncCacheLoader.asyncReload(key, oldValue)。当发生错误时,它不应删除旧值,但可以在下一次调用时再次触发。如果结果解析为 null
,则应将其删除。由于提供了旧值,如果返回则它将根据需要重置时间戳。
我创建了一个配置了 refreshAfterWrite 的 Caffeine AsyncLoadingCache。对于给定的键,如果一个值已经加载到缓存中并且在刷新期间出现错误,则 key/value 将被删除。相反,我想保留旧值并更新到期时间戳,这样它就不会立即再次刷新。有没有办法配置此行为?
您可以实施任一 CacheLoader.reload(key, oldValue) or AsyncCacheLoader.asyncReload(key, oldValue)。当发生错误时,它不应删除旧值,但可以在下一次调用时再次触发。如果结果解析为 null
,则应将其删除。由于提供了旧值,如果返回则它将根据需要重置时间戳。