我有一个很小的表,它不会经常更新。
我想将其添加到缓存中,以便每天更新。
我正在使用spring和咖啡因来实现这一目标。
我可以加载启动程序,但不刷新它。
请帮忙。

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

最佳答案

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

@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));
}

08-05 08:56