1

我有一张很小的桌子,不经常更新。我想将此添加到缓存中,以便它每天更新。我正在使用弹簧和咖啡因来实现这一点。我能够加载启动但不知道如何刷新它。请帮忙。

@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() 将其放入缓存中。但是我如何在指定的时间间隔后再次从表中刷新它。

4

1 回答 1

0

找到了答案。
它在第一次调用时加载表。
之后,我们只是从后续调用中读取缓存

@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));
}
于 2018-10-29T15:37:10.403 回答