0

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

<!-- 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),上面的配置不起作用。相反,它抛出一个异常,说“loadCaches 不能返回一个空的集合”。然后我引用它并再次谷歌它,现在配置文件是这样的:

<!-- 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 属性中,我看到其他人正在使用“list”、“set”和“map”。有什么区别?
  2. 里面的bean怎么配置?

我已经在这个 bean 设置上苦苦挣扎了几天。你能帮我解决一下吗?提前致谢

4

2 回答 2

0

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

里面谈到了CacheManager界面和它是如何工作的。

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

在 BookService 中,您将使用类似@CacheConfig(cacheNames='Books').

希望有帮助!

于 2015-01-30T07:17:04.527 回答
0

我在将 Jedis 与 spring-data-redis 一起使用时遇到了类似的问题。我的发现之一是 spring-data-redis对 Jedis 版本非常具体。就我而言,Spring-data-redis 1.5.0.RELEASEJedis 2.6.2兼容。

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

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

于 2015-06-26T09:02:30.770 回答