是否可以通过caffeineCache访问元素的创建时间戳?
cache.get("x").getTimestamp()
种?
ysw920221 回答:咖啡因缓存-如何获取元素的创建日期信息
高速缓存尝试存储执行其操作所需的最少元数据,因此省略了一些便利以避免浪费。在这种情况下,您应该考虑通过包装您的值来添加该元数据。
缓存确实公开了运行时元数据,但这通常取决于其构造方式。可以使用Cache.policy()进行访问。例如,cache.policy().expireAfterWrite()
提供了一种ageOf(key)
方法来确定该条目自上次重置其到期时间戳以来已驻留多长时间。要计算条目到期之前的时间,可以从保单有效期内减去年龄(通过getExpiresAfter()
)。
Cache 接口提供了 getPolicy 方法来根据缓存的运行时特性检查和执行低级操作。例如,下面的代码段使用后写入策略返回缓存中条目的年龄。
private static void printAgeOfEntryUsingAfterWritePolicy(Cache cache,Object key) {
Optional<FixedExpiration> expirationPolicy = cache.policy().expireAfterWrite();
if (!expirationPolicy.isPresent()) {
return;
}
Optional<Duration> ageOfEntry = expirationPolicy.get().ageOf(key);
if (!ageOfEntry.isPresent()) {
return;
}
Duration duration = ageOfEntry.get();
System.out.println("Element with key " + key + " is in the cache from " + duration.getSeconds() + " seconds....");
}
参考link。