我正在使用 Guava Cache Loader 并从配置文件中获取过期时间。
我想知道是否有办法以编程方式重置给定缓存的到期时间值。在我的情况下,这对于拾取对配置值的更改的侦听器的操作是可取的。
我正在使用 Guava Cache Loader 并从配置文件中获取过期时间。
我想知道是否有办法以编程方式重置给定缓存的到期时间值。在我的情况下,这对于拾取对配置值的更改的侦听器的操作是可取的。
不,没有办法更改整个缓存的过期时间(没有构建新缓存并复制旧缓存的内容)。如果您要重置缓存中的单个条目,只需重新输入值即可:
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()
,这将重置访问过期。