我正在尝试在我的项目中使用Guava缓存,并调查Guava Cache和LoadingCache。
我使用以下代码创建缓存:
Cache<Person, Integer> cache = CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.SECONDS).build();
cache.get(key, CallableProvidedForLoading)
或
final LoadingCache<Person, Integer> cache = CacheBuilder.newBuilder()
.maximumSize(100)
.expireAfterAccess(6, TimeUnit.SECONDS)
.expireAfterWrite(6, TimeUnit.SECONDS)
.build(
new CacheLoader<Person, Integer>() {
@Override
public Integer load(Person key) throws Exception {
//can't return null, use -1 to indicate invalid value
return -1;
}
}
);
我想要实现的是,如果在一段时间内没有访问该条目,例如10分钟,则从缓存中删除该条目。
但是,如果我看到Cache和LoadingCache将在时间到期时尝试重新加载条目,这将使该条目保持在缓存中,即使它不再被使用。
所以,我会问到如何在到期时从缓存中删除条目