Cacheine Cache в Spring Boot Cache: получить все кэшированные ключи - PullRequest
0 голосов
/ 28 января 2020

Я использую библиотеку Caffeine Cache для Spring Cache. Есть ли способ получить все кэшированные ключи?

Мое текущее приложение работает с данными почти в реальном времени, с потоком как:

enter image description here

В Cache Updater Thread (который выполняется с фиксированным интервалом, независимо от запроса пользователя) мне нужно получить все ключи, находящиеся в настоящее время в кэше, извлечь их последние данные из базы данных и затем использовать @CachePut для обновления кеш.

1 Ответ

2 голосов
/ 28 января 2020

Вы можете внедрить CacheManager и получить из него собственный кеш.

@AllArgsConstructor
class Test {
  private CacheManager cacheManager;

  Set<Object> keys(String cacheName){
    CaffeineCache caffeineCache = (CaffeineCache) cacheManager.getCache(cacheName);
    com.github.benmanes.caffeine.cache.Cache<Object, Object> nativeCache = caffeineCache.getNativeCache();
    return nativeCache.asMap().keySet();
  }

}

Конечно, вы должны добавить несколько проверок приведения классов.

...