从番石榴缓存中删除元素

2022-09-01 21:57:50

我正在使用import com.google.common.cache.Cache

我以这种方式启动了缓存:

private Cache<String,String> mycache =CacheBuilder.newBuilder()
   .concurrencyLevel(4).expireAfterAccess(30, TimeUnit.MINUTES).build();

在某些情况下,我愿意在等待到期之前手动删除条目。

我发现这样做的唯一方法是:

mycache.asMap().remove("somekey");

我要问,这是否是这样做的正确方法?我会有任何问题吗?


答案 1

正确的方法是使用该方法:invalidate

mycache.invalidate("somekey");

API 文档中所述:

void invalidate(Object key)
放弃 键 的任何缓存值。key


答案 2

您应该使用方法来删除单个元素。对于批量删除,您可以使用方法。invalidate(key)invalidateAll(keys)

在您的情况下,您可以使用

mycache.invalidate("somekey"); 

希望这能解决您的问题。