spring-data-redis: cacheManager 配置问题

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

我正在使用 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 不能返回一个空的集合”。 然后引用了一下又google了一下,现在的配置文件是这样的:

<!-- 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 设置苦苦挣扎了几天。你能帮我解决这些问题吗?提前致谢

最佳答案

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

里面讨论了 CacheManager 接口(interface)及其工作原理。

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

在 BookService 中,您可以使用类似 @CacheConfig(cacheNames='Books') 的东西。

希望对您有所帮助!

关于spring-data-redis: cacheManager 配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681924/

相关文章:

java.util.Date 来自<输入类型 ="datetime-local"/>

ios - Xcode iOS 图像缓存

database - 我可以通过哪些方式设计 key 来提高 Redis 集的性能?

java - Spring 集成 jpa 存储库测试无法正常工作

java - 无法连接到oracle数据库。它说 "Unable to determine jdbc url from datasource"

linux - 如何判断文件是否缓存在 linux 的内存中?

caching - Azure 缓存服务 - 疯狂高错过率

node.js - 按值搜索 redis 哈希

sorting - 如何按键中的值对 Redis 哈希进行排序

java - Hibernate DTD 未从类路径加载,jar 在那里,仍然出现 FileNotFoundException