Как добавить всю таблицу в кеш весной - PullRequest
0 голосов
/ 28 октября 2018

У меня очень маленькая таблица, которая не часто обновляется.Я хочу добавить это в кеш, чтобы он обновлялся каждый день.Я использую весну и кофеин для реализации этого.Я могу загрузить стартап, но не могу его обновить.Пожалуйста помоги.

@Bean
public CacheManager cacheManager() {

    SimpleCacheManager simpleCacheManager = new SimpleCacheManager();

    Cache stringStringCache = new CaffeineCache("name", Caffeine.newBuilder()
            .recordStats()
            .maximumSize(100)
            .expireAfterWrite(1, TimeUnit.DAYS)
            .build());

    simpleCacheManager.setCaches(Collections.singleton(stringStringCache));
    return simpleCacheManager;
}

Я могу просто извлечь все записи из репозитория и поместить их в кеш с помощью cache.put ().Но как я обновляю его снова из таблицы после указанного интервала времени.

1 Ответ

0 голосов
/ 29 октября 2018

нашел ответ.
Загружает таблицу при первом вызове.
После этого мы просто читаем из кеша при последующих вызовах

@Cacheable("name")
@Override
public Map<String,String> findNameById() {
    log.info("db call");
    return IteratorUtils.toList(bookRepository
            .findAll()
            .iterator())
            .stream()
            .collect(Collectors.toMap(Book::getId,Book::getName));
}
...