Ответ 1
Правильный способ сделать это - использовать метод invalidate
:
mycache.invalidate("somekey");
Как указано в документации API:
void invalidate(Object key)
Отбрасывает любое кешированное значение для ключаkey
.
Я использую import com.google.common.cache.Cache
Я начал кэширование следующим образом:
private Cache<String,String> mycache =CacheBuilder.newBuilder()
.concurrencyLevel(4).expireAfterAccess(30, TimeUnit.MINUTES).build();
Я хочу удалить записи вручную в некоторых сценариях перед ожиданием истечения срока действия.
Единственное, что я нашел для этого, было следующее:
mycache.asMap().remove("somekey");
Я спрашиваю, правильно ли это делается? У меня будут проблемы с этим?
Правильный способ сделать это - использовать метод invalidate
:
mycache.invalidate("somekey");
Как указано в документации API:
void invalidate(Object key)
Отбрасывает любое кешированное значение для ключаkey
.
Вы должны использовать метод invalidate(key)
для удаления отдельных элементов. Для удаления большого объема вы можете использовать метод invalidateAll(keys)
.
В вашем случае вы можете использовать
mycache.invalidate("somekey");
Надеюсь, что это решает вашу проблему.