有没有办法从CaffeineCache访问元素的创建时间戳?一种cache.get("x").getTimestamp()
发布于 2020-04-23 23:31:29
缓存尝试存储执行其操作所需的最小元数据,因此省去了一些便利措施以避免浪费。在这些情况下,您应该考虑通过包装您的值来添加元数据。
缓存确实公开了运行时元数据,但这通常取决于它是如何构造的。可以使用Cache.policy()访问的。例如,cache.policy().expireAfterWrite()提供了一个ageOf(key)方法来确定条目自其过期时间戳上次重置以来已经存在了多长时间。要计算离条目过期还有多长时间,可以从策略的持续时间中减去年龄(通过getExpiresAfter())。
发布于 2021-04-28 14:13:18
Cache接口提供了getPolicy方法,用于根据cache的运行时特性检查和执行底层操作。例如,下面的代码片段使用写入后策略返回缓存中条目的年龄。
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。
https://stackoverflow.com/questions/61389171
复制相似问题