2013-08-09 13 views
7

Zajmuję się tworzeniem aplikacji internetowych przy użyciu Spring MVC i używam abstrakcji pamięci podręcznej sprężyny z Redis do buforowania zapytań do bazy danych. Ale nie jestem w stanie utworzyć wielu magazynów pamięci podręcznej za pomocą @Cacheable.Czy jest możliwe utworzenie wielu magazynów pamięci podręcznej przy użyciu abstrakcji pamięci podręcznej Spring z redis?

@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); 

Korzystanie Redis, zarówno s i r mają taką samą wartość "a". Mimo że przechowuję te dwie metody w pamięci podręcznej, wydaje się, że nie ma to żadnego wpływu.

Ale to działa dobrze, gdy używam Springa SimpleCacheManager.

konfiguracja Wiosna fasola dla 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> 
+0

Czy możesz pokazać swoją konfigurację fasoli Spring? – ragnor

+0

Dodano konfigurację fasoli. –

Odpowiedz

6

Zgodnie z docs RedisCacheManager domyślnie zapisuje bezpośrednio klawiszy, bez dopisywania przedrostka (nazwa cache, który działa jako nazw). Aby go zmienić i uniknąć konfliktów, ustaw "usePrefix" na "true": http://static.springsource.org/spring-data/data-redis/docs/current/api/org/springframework/data/redis/cache/RedisCacheManager.html

+0

Świetnie! Teraz działa idealnie. –

+0

Dzięki kolego! Myślę, że domyślnie powinien być on prawdziwy ... – ianaz

Powiązane problemy