咖啡因缓存有 CacheEntryExpiredListener 吗?
Is there a CacheEntryExpiredListener for Caffeine Cache?
我知道 Cache2k
有一个 CacheEntryExpiredListener
只有在缓存条目自行过期时才会触发(而不是在显式失效时)。
Cache<String, Object> cache = Cache2kBuilder.of(String.class, Object.class)
.addListener(
(CacheEntryExpiredListener<String, Object>) (cache, entry)
-> handleExpired(entry.getKey(), entry.getValue()))
.expireAfterWrite(60, TimeUnit.SECONDS)
.build();
问题:如何使用 caffeine
缓存实现来实现同样的效果?
感谢@Ben Manes 的提示:
Caffeine.newBuilder()
.removalListener((key, value, cause) -> {
if (cause.wasEvicted()) System.out.printf("key=%s, value=%s", key, value);
})
.expireAfterWrite(60, TimeUnit.SECONDS)
.build();
我知道 Cache2k
有一个 CacheEntryExpiredListener
只有在缓存条目自行过期时才会触发(而不是在显式失效时)。
Cache<String, Object> cache = Cache2kBuilder.of(String.class, Object.class)
.addListener(
(CacheEntryExpiredListener<String, Object>) (cache, entry)
-> handleExpired(entry.getKey(), entry.getValue()))
.expireAfterWrite(60, TimeUnit.SECONDS)
.build();
问题:如何使用 caffeine
缓存实现来实现同样的效果?
感谢@Ben Manes 的提示:
Caffeine.newBuilder()
.removalListener((key, value, cause) -> {
if (cause.wasEvicted()) System.out.printf("key=%s, value=%s", key, value);
})
.expireAfterWrite(60, TimeUnit.SECONDS)
.build();