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()or .getIfPresent(),这将重置访问过期。

于 2017-12-06T08:56:41.700 回答