我们正在使用咖啡因进行缓存。设置似乎很简单。我们按以下方式设置缓存
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
。这不正确吗?我们如何配置缓存有什么问题。
感谢任何见解。
感谢。