并行的Spring Boot多个缓存管理器

标签 spring spring-mvc spring-boot redis caffeine

我有一个 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/

相关文章:

java - 在 Controller 和服务之间共享相同的方法前置条件逻辑?

java - 调试 Java Spring 中的事务注释

json - Spring 3.1 自定义 JSON 转换器

java - Spring @ModelAttribute 模型字段映射

jquery - 如何使用 jquery 在弹出窗口中进行页面转换?

java - 如何在 Digital Ocean 上的同一个 Droplet 中使用 postgresql 和 spring boot 应用程序

java - Spring批量返回自定义进程退出码

hibernate - WAS 6.1,JPA 与 JTA, hibernate ,Spring : data retrieval problem

java - 运行两个相关的 Spring boot 模块

java - @RequestParam 和@PathVariable 封装