我有一个 Spring Boot Web 应用程序,并将 spring session 与 redis 存储一起使用。 Web 请求有时需要缓存它们的响应(以避免不必要的数据库访问),我计划使用 Caffeine。
然而,Redis 似乎接管了(只要我包含 gradle 依赖项)作为缓存实现,因为我为 Caffeine 设置的所有 TTL 都被忽略了。
是否可以/推荐在 Spring Boot 应用程序中使用超过 1 个缓存提供程序? 我可以尝试将 Redis 用于所有缓存,只是担心它会影响 Spring Boot 附带的 session 实现(我没有配置任何东西,只是使用了 @EnableRedisHttpSession)。
我很感激任何关于这方面的建议。
最佳答案
您可以将单独的缓存管理器与 @Cacheable
一起使用:
@RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)
@Cacheable(key = "#name", cacheManager = "caffeineCacheManager")
public String greeet(@PathVariable String name) {
return "Hello " + name;
}
您唯一需要做的就是将缓存管理器作为命名 bean:
@Bean
@Qualifier("caffeineCacheManager")
AbstractCacheManager caffeineCacheManager() {
return new CaffeineCacheManager();
}
关于并行的Spring Boot多个缓存管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44571140/