Удалить элементы из кэша 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");

Я спрашиваю, правильно ли это делается? У меня будут проблемы с этим?

Ответы

Ответ 1

Правильный способ сделать это - использовать метод invalidate:

mycache.invalidate("somekey");

Как указано в документации API:

void invalidate(Object key)
Отбрасывает любое кешированное значение для ключа key.

Ответ 2

Вы должны использовать метод invalidate(key) для удаления отдельных элементов. Для удаления большого объема вы можете использовать метод invalidateAll(keys).

В вашем случае вы можете использовать

mycache.invalidate("somekey"); 

Надеюсь, что это решает вашу проблему.