对此答案的一个非常重要的注意事项:如果您计划更新这些(缓存)值,请不要忘记在存储库的save()和delete()中使用@CacheEvict。否则,您在更新新记录时会遇到问题。
我已经实现了我的解决方案(带的Ehcache)这样(在库):
CurrencyRepository.java: //定义缓存声明
@Cacheable("currencyByIdentifier")
public Currency findOneByIdentifier(String identifier);
CacheConfiguration.java: //定义EhCache配置中的缓存
@Bean
public JCacheManagerCustomizer cacheManagerCustomizer() {
return cm -> {
cm.createCache("currencyByIdentifier", jcacheConfiguration);
cm.createCache("sourceSystemByIdentifier", jcacheConfiguration);
};
}
CurrencyRepository.java: //驱逐上保存并通过覆盖默认方法
@Override
@CacheEvict("currencyByIdentifier")
<S extends Currency> S save(S currency);
@Override
@CacheEvict("currencyByIdentifier")
void delete(Currency currency);
删除我希望帮助:)
缓存系统需要的内存资源。尤其是如果api频繁调用。实际上你的情况还不够清楚。如果响应是相同的,你为什么要调用api 15000次?为什么你决定这样做?我认为解决方案不正确,请描述你的情况,我们会尝试提供解决方案。 – Sarkhan