2013-08-09 6 views
7

मैं स्प्रिंग एमवीसी का उपयोग कर एक वेब अनुप्रयोग विकसित कर रहा हूं और मैं अपने डेटाबेस प्रश्नों को कैश करने के लिए रेडिस के साथ वसंत के कैश अबास्ट्रक्शन का उपयोग कर उपयोग कर रहा हूं। लेकिन मैं @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); 

का उपयोग redis, दोनों s और r एक ही मूल्य "a" है। भले ही मैं अलग-अलग कैशों में दो तरीकों को कैश करता हूं, ऐसा लगता है कि इसका कोई असर नहीं पड़ता है।

लेकिन जब मैं वसंत के SimpleCacheManager का उपयोग करता हूं तो यह ठीक काम करता है। 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

क्या आप अपनी स्प्रिंग बीन्स कॉन्फ़िगरेशन दिखा सकते हैं? – ragnor

+0

बीन्स कॉन्फ़िगरेशन जोड़ा गया। –

उत्तर

6

डॉक्स डिफ़ॉल्ट रूप से RedisCacheManager कुंजी सीधे बचाता है के अनुसार, एक उपसर्ग (कैश नाम है, जो एक नाम स्थान के रूप में कार्य) जोड़कर बिना। इसे बदलने और संघर्षों से बचने के लिए 'usePrefix' को 'true' पर सेट करें: http://static.springsource.org/spring-data/data-redis/docs/current/api/org/springframework/data/redis/cache/RedisCacheManager.html

+0

बढ़िया! यह अब पूरी तरह से काम करता है। –

+0

धन्यवाद दोस्त! मुझे लगता है कि डिफ़ॉल्ट रूप से सच होना चाहिए ... – ianaz

संबंधित मुद्दे