spring - 如何在Java中缓存REST API响应

标签 spring rest caching rest-client spring-cache

我正在用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/

相关文章:

javascript - 是否有一种正确的方法来确保一次只有一个用户使用 REST+HTTP 更改对象?

c# - 在缓存中丢失我的对象

asp.net - 为什么 FireFox 3.6.8 不缓存来自 asp.net 开发者服务器的静态内容?

java - 在 @Application bean 中使用构造函数注入(inject)会导致循环引用

java - Spring Security 中用于身份验证的模拟对象

rest - RSpec "No routes matches"

spring - 如何将 JPA DAO 迁移到具有二级缓存的 Spring Data?

java - Spring缓存,不同缓存上相同的key

java - spring 缓存,TTL 除非服务关闭

rest - 谷歌分析报告 API v4 : Difference in return values for same period