2017-06-15 105 views
0

我有一个Spring Boot Web应用程序,并使用spring会话与redis存储。 Web请求有时需要缓存他们的响应(以避免不必要的数据库访问),并且我计划使用咖啡因。
然而,似乎Redis接管了(只要我包含gradle依赖)作为缓存实现,因为我为咖啡因设置的所有TTL都被忽略。并行Spring Boot多缓存管理器

在Spring Boot应用程序中使用超过1个Cache提供程序甚至可能/推荐吗? 我可以尝试将Redis用于所有缓存,只是担心它会影响Spring Boot附带的会话实现(我没有配置任何使用@EnableRedisHttpSession的内容)。

我很欣赏这方面的任何建议。

+1

有一个[检测顺序] (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-caching.html#_supported_cache_providers)。我的理解是Spring Cache旨在允许多个缓存管理器并且这样做被认为是可以的。 –

回答

1

您可以使用单独的缓存经理@Cacheable

@RequestMapping(value = "/hello/{name}", method = RequestMethod.GET) 
@Cacheable(key = "#name", cacheManager = "caffeineCacheManager") 
public String greeet(@PathVariable String name) { 
    return "Hello " + name; 
} 

,你唯一需要的是让你的缓存管理器为一个名为豆:

@Bean 
@Qualifier("caffeineCacheManager") 
AbstractCacheManager caffeineCacheManager() { 
    return new CaffeineCacheManager(); 
}