Is it possible to create multiple cache stores using Spring's cache abstraction with redis?
caching, redis, spring, spring-mvc
Solution
According to the docs the RedisCacheManager by default saves the keys directly, without appending a prefix (cache name, which acts as a namespace). To change it and avoid clashes set 'usePrefix' to 'true': http://static.springsource.org/spring-data/data-redis/docs/current/api/org/springframework/data/redis/cache/RedisCacheManager.html
Problem
I'm developing a web application using Spring MVC and I'm using using spring's cache abstraction with Redis to cache my database queries. But I am not able to create multiple cache stores using `@Cacheable`. ``` @Cacheable("acache") public String atest(int i) { return "a"; } @Cacheable("bcache") public String btest(int i) { return "b"; } ... ... String s = atest(1); String r = btest(1); ``` Using redis, both `s` and `r` have the same value "`a`". Even though I cache the two methods in different caches, it seems to have no effect. But this works fine when I use Spring's `SimpleCacheManager`. Spring bean configuration for Redis: ``` <cache:annotation-driven /> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:hostName="${redis.host-name}" p:port="${redis.port}" p:usePool="true"/> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connectionFactory-ref="jedisConnectionFactory"/> <bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager" c:template-ref="redisTemplate"> </bean> ```