如何在Spring中将整个表添加到缓存

时间:2018-10-28 10:00:11

标签: java spring-boot jpa caching caffeine

我有一个很小的表,它不经常更新。 我想将其添加到缓存中,以便每天更新。 我正在使用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()。 但是如何在指定的时间间隔后再次从表中刷新它。

1 个答案:

答案 0 :(得分: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));
}