1

我们将 Caffeine 用于缓存目的。设置似乎很简单。我们通过以下方式设置缓存

LoadingCache<Triple<Long, Long, Long>, Result> cache = Caffeine.newBuilder()
            .maximumSize(1000)
            .refreshAfterWrite(240, TimeUnit.MINUTES)
            .build(new CacheDataLoader());

public class CacheDataLoader implements CacheLoader<Triple<Long, Long, Long>, Result>  {
    @Override
    public Result load(@Nonnull Triple<Long, Long, Long> id) throws Exception 
    {
      -------
    }

    @Override
    public Result reload(@Nonnull Triple<Long, Long, Long> id, @Nonnull Result oldValue) throws Exception {
       ---------
    }
}

当我们这样做时cache.get(id),它总是触发将从数据库加载的load函数。CacheDataLoader因此,永远不会从内存中获取数据。根据文档,load仅当请求的密钥不在内存中时才应触发。这不正确吗?我们如何配置缓存有什么问题吗?

任何见解都值得赞赏。

谢谢。

4

0 回答 0