我使用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>
现在它不会抱怨空集合,而是初始化的其他内容 .
所以这里还有另外两个问题:
-
在cacheNames属性中,我看到其他人正在使用"list","set"和"map" . 有什么区别?
-
如何在里面配置bean?
我已经在这个bean设置上苦苦挣扎了几天..你能帮帮我一下吗?提前致谢
2 回答
作为提示,请参阅
org.springframework.cache.annotation.EnableCaching
注释 .在里面它讨论了
CacheManager
接口及其工作原理 .快速'get you going',您需要指定要使用的缓存的名称(例如,当您使用
@CacheConfig(cacheNames='...')
或@Cacheable(value = '...')
时 . 想法是您创建要缓存的相关'things'的逻辑分组,即:Books ,汽车,贷款等在BookService中,您将使用类似
@CacheConfig(cacheNames='Books')
的内容 .希望有所帮助!
我在使用jedis和spring-data-redis时遇到了类似的问题 . 我发现的一个发现是,spring-data-redis对于Jedis版本来说非常 specific . 对于我的情况, 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