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