@Cacheable和refreshAfterWrite

时间:2018-09-28 12:51:39

标签: java spring-cache caffeine

当前,我将spring boot缓存抽象和咖啡因与config spring.cache.caffeine.spec=expireAfterWrite=2h,recordStats一起用作唯一的config和类似的方法:

@Cacheable(
        value = CacheConfig.PRODUCTS_CACHE_NAME
)
public List<ProductDetails> getProductsDetails(String language) {
    // long running remote request
    return products;
}

对于更灵活的行为,我希望在远程服务不可用时使高速缓存仍旧使用旧值。

但是配置spring.cache.caffeine.spec=refreshAfterWrite=2h,recordStats导致异常告诉refreshAfterWrite requires a LoadingCache

我知道我自己可以实现一个CacheLoader bean。但是然后我将不得不直接调用缓存,并且会失去@Cachable的透明行为。

我搜索以下行为:

  1. 缓存MISS =>加载值并同步返回。

  2. Cache HIT =>从缓存中提供值。

  3. 刷新阈值后=>缓存HIT同步提供缓存中的旧值,并在后台刷新该值。

  4. 奖金:当前值早于X =>加载值之后,缓存HIT并同步返回。

这可能吗?

0 个答案:

没有答案