Существует ли CacheEntryExpiredListener для кэша кофеина? - PullRequest
0 голосов
/ 07 марта 2019

Я знаю, 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 реализацию кэша?

1 Ответ

0 голосов
/ 07 марта 2019

Благодаря подсказке @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();
...