Spring-data-redis:cacheManager配置问题

时间:2014-09-05 08:47:19

标签: spring caching redis spring-data-redis redis-cache

我使用redis作为弹簧缓存实现。官方文档说我们应该像这样配置缓存管理器:

<!-- Old version -->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
        c:template-ref="redisTemplate">

当jedis的版本= 2.0.0和spring-data-redis的版本= 1.0.2.RELEASE时,它可以正常工作。

但是在更新版本中(例如jedis = 2.5.2和spring-data-redis = 1.3.4.RELEASE),上面的配置无效。相反,它抛出一个异常,说&#34; loadCaches不能返回一个空集合&#34;。 然后我引用它并再次搜索它,现在配置文件是这样的:

<!-- New Version -->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
        c:template-ref="redisTemplate">
    <property name="cacheNames">
        <map>
            <bean id="someid" class="someclass" p:name="somename"/>
        </map>
    </property>
</bean>

现在它并没有抱怨空集合,而是关于初始化的其他事情。

所以这里还有另外两个问题:

  1. 在cacheNames属性中,我看到其他人正在使用&#34; list&#34;,&#34; set&#34;和&#34; map&#34;。有什么区别?
  2. 如何在里面配置bean?
  3. 我一直在为这个bean设置苦苦挣扎几天..你能帮帮我吗?提前致谢

2 个答案:

答案 0 :(得分:0)

作为提示,请参阅org.springframework.cache.annotation.EnableCaching注释。

其中讨论了CacheManager界面及其工作原理。

快速“开始使用”,您需要指定要使用的缓存的名称(例如,当您使用@CacheConfig(cacheNames='...')@Cacheable(value = '...')时。您正在创建要缓存的相关“事物”的逻辑分组,即:书籍,汽车,贷款等。

在BookService中,您可以使用@CacheConfig(cacheNames='Books')

之类的内容

希望有所帮助!

答案 1 :(得分:0)

我遇到了使用jedis和spring-data-redis的类似问题。我发现的一个发现是,spring-data-redis对于Jedis版本非常具体。就我而言, Spring-data-redis 1.5.0.RELEASE Jedis 2.6.2 兼容。

对于您的情况,请参阅下面的链接,查找编译依赖项部分,您会发现 1.3.4.RELEASE Jedis 2.4.1 兼容。我相信一旦您更改POM文件Jedis版本,您的问题就会得到解决。

http://mvnrepository.com/artifact/org.springframework.data/spring-data-redis/1.3.4.RELEASE