gpt4 book ai didi

spring - 是否可以使用 Spring 的缓存抽象和 redis 创建多个缓存存储?

转载 作者:IT王子 更新时间:2023-10-29 05:56:46 29 4
gpt4 key购买 nike

我正在使用 Spring MVC 开发一个 Web 应用程序,我正在使用 spring 的缓存抽象和 Redis 来缓存我的数据库查询。但是我无法使用 @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,sr都有相同的值“a”。尽管我把这两个方法缓存在不同的缓存中,但似乎没有任何效果。

但是当我使用 Spring 的 SimpleCacheManager 时,它工作正常。

Redis 的 Spring bean 配置:

<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>

最佳答案

根据文档,RedisCacheManager 默认直接保存键,不附加前缀(缓存名称,充当命名空间)。要更改它并避免冲突,请将“usePrefix”设置为“true”:http://static.springsource.org/spring-data/data-redis/docs/current/api/org/springframework/data/redis/cache/RedisCacheManager.html

关于spring - 是否可以使用 Spring 的缓存抽象和 redis 创建多个缓存存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18145372/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com