我们将 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
仅当请求的密钥不在内存中时才应触发。这不正确吗?我们如何配置缓存有什么问题吗?
任何见解都值得赞赏。
谢谢。