web-dev-qa-db-ja.com

Guava Cacheから要素を削除します

使ってます import com.google.common.cache.Cache

私はこの方法でキャッシュを開始しました:

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

いくつかのシナリオでは、有効期限が切れるのを待つ前に、手動でエントリを削除してもかまいません。

私がこれを行うことがわかった唯一の方法はこれです:

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

それがこれを行う適切な方法であるかどうか私は尋ねていますか?何か問題がありますか?

19
rayman

これを行う適切な方法は、invalidateメソッドを使用することです。

_mycache.invalidate("somekey");
_

APIドキュメント で指定されているとおり:

void invalidate(Object key)
キーkeyのキャッシュされた値を破棄します。

33

個々の要素を削除するには、invalidate(key)メソッドを使用する必要があります。一括削除の場合は、invalidateAll(keys)メソッドを使用できます。

あなたの場合あなたは使うことができます

mycache.invalidate("somekey"); 

これで問題が解決することを願っています。

5
Atul Sharma