我正在用Java构建应用程序。我在api中循环命中超过15000次并获得响应(响应仅是静态的)
例子
**
username in for loop
GET api.someapi/username
processing
end loop
**
完成所有通话需要几个小时。建议我以任何方式(任何缓存技术)来减少通话时间。
附言:
1) i am hitting api from java rest client(Spring resttemplate)
2) that api i am hitting is the public one, not developed by me
3) gonna deploy in heroku
最佳答案
尝试使用Springs Cache Abstraction https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html
。
您可以在具有restTemplate调用的方法中使用此抽象。
任何使用此抽象的方法调用响应都可以缓存,方法参数作为键,返回类型作为响应。
@Cacheable("username")
public UserResponse getUser(String username){
// Code to call your rest api
}
这将围绕该方法创建一个Spring AOP建议。每次调用该方法时,它都会检查高速缓存中是否有该键(用户名)可用的数据,如果是,则从高速缓存中返回响应,而不调用实际方法。如果数据在缓存中不可用,则它将调用实际方法并将数据缓存在缓存中,因此,下次使用相同的键调用同一方法时,可以从缓存中提取数据。
可以通过简单的JVM缓存(例如Guava)或更复杂的缓存实现(例如EHCache,Redis,HazelCast)来支持这种缓存抽象。
关于spring - 如何在Java中缓存REST API响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295105/