在expiracy时,从Guava Cache和LoadingCache中删除条目

时间:2017-11-10 10:25:31

标签: guava

我正在尝试在我的项目中使用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将在时间到期时尝试重新加载条目,这将使该条目保持在缓存中,即使它不再被使用。

所以,我会问到如何在到期时从缓存中删除条目

0 个答案:

没有答案