1

Guava Cache Loader を使用しており、設定ファイルから有効期限が切れるまでの時間を取得しています。

特定のキャッシュの有効期限の値をプログラムでリセットする方法があるかどうか疑問に思っています。私の場合、これは、構成された値への変更を取得するリスナーのアクションで望ましいです。

4

1 に答える 1

1

いいえ、キャッシュ全体の有効期限を変更する方法はありません (新しいキャッシュを構築して古いキャッシュの内容をコピーする以外に)。キャッシュ内の単一のエントリをリセットすることについて質問している場合は、値を再入力するだけで実行できます。

public static void <K, V> resetExpiration(Cache<K, V> cache, K key) {
  V value = cache.getIfPresent(key);
  if (value != null) {
    cache.put(key, value); // basically a no-op, but key's expiration is reset
  }
}

または、アクセス時に失効するキャッシュの場合は、.get()または.getIfPresent()を呼び出すだけで、アクセスの有効期限がリセットされます。

于 2017-12-06T08:56:41.700 に答える