从Guava Cache中删除元素

时间:2014-10-06 07:33:27

标签: java caching hashmap guava

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

我已经用这种方式启动了缓存:

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

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

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

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

我在问这是不是这样做的正确方法?我会遇到任何问题吗?

2 个答案:

答案 0 :(得分:31)

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

mycache.invalidate("somekey");

正如API documentation

中所述
  

void invalidate(Object key)
  丢弃键key的所有缓存值。

答案 1 :(得分:5)

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

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

mycache.invalidate("somekey"); 

希望这能解决你的问题。