我有一个很小的表,它不会经常更新。
我想将其添加到缓存中,以便每天更新。
我正在使用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));
}