我的 Web 应用程序中有一些路由需要缓存其结果。
示例:domain.com/client/1
此路由在我的数据库中进行一些查询,生成 1~2mb 的 JSON。我想缓存这条路线的结果。但我也想在一分钟内过期。如何最好地做到这一点?
最佳答案
对于服务器端缓存,您可以查看 JCACHE (JSR 107)。
缓存解决方案,例如 Ehcache和 Infinispan实现 JSR 107 .
无穷无尽
例如,使用 Infinispan,您可以为缓存条目设置生命周期:
Configuration configuration = new ConfigurationBuilder()
.expiration()
.lifespan(60, TimeUnit.SECONDS)
.build();
Cache<Object, Object> cache = new DefaultCacheManager(configuration).getCache();
cache.put("key", "value");
cache.remove("key");
要使用 Infinispan,只需在 pom.xml
中添加以下依赖项:
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-embedded</artifactId>
<version>8.0.1.Final</version>
</dependency>
如果您不使用 Maven,请从 Infinispan download page 下载它.
Guava
您还可以查看 cache API provided by Guava :
Cache<Object, Object> cache = CacheBuilder.newBuilder()
.expireAfterWrite(60, TimeUnit.SECONDS)
.build();
cache.put("key", "value");
cache.invalidate("key");
要使用它,请将以下依赖项添加到您的 pom.xml
:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
关于tomcat - 如何在 Tomcat 7 中缓存请求结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631758/