首页 > 解决方案 > CaffeineCache为什么使用refreshAfterWrite时loadSuccessCount不增加?

问题描述

我在 CaffeineCache 中使用 LoadingCache。我将 refreshAfterWrite 设置为 30 分钟,并通过 Caffeine.stats() 检查了统计数据。我预计 loadSuccessCount 值将在 30 分钟后增加,但与 30 分钟前相同。

下面是代码:

        codeListCache = Caffeine.newBuilder()
            .refreshAfterWrite(30, TimeUnit.MINUTES)
            .recordStats()
            .build(codeFilterNo -> loadCodeList(codeFilterNo));

        codeListCache.getAll(codeFilterNoList);

下面是我试图检查的日志。


2020-04-13 00:13:42 [scheduling-1] INFO cnapsservice.OlapTableService - CodeListCache Stats : CacheStats{ hitCount=0, missCount=30, loadSuccessCount=30 , loadFailureCount=0, totalLoadTime=2139529433, evictionCount=0, evictionWeight =0}

2020-04-13 01:08:42 [scheduling-1] INFO cnapsservice.OlapTableService - CodeListCache Stats:CacheStats{ hitCount=102,missCount=30,loadSuccessCount=30,loadFailureCount=0,totalLoadTime=2139529433,evictionCount=0,evictionWeight =0}


我可以看到 hitCount 正在增长,但我不确定缓存是否重新加载成功,因为 loadSuccessCount 没有改变。我认为这refreshAfterWrite将在最后一次写入后 30 分钟更新每个键的值,这会增加“loadSuccessCount”。

所以我的问题是,

标签: javaguavacaffeine-cache

解决方案


推荐阅读