springboot2.X redis注解的问题 会自动添加双引号的前缀
我在自己配置redis 缓存注解的时候,查询数据结果的时候发现了2.0版本会对key 进行namespace进行区分。原因是他修改了前缀的方法,添加 name + "::" 进行区分。但是我还是希望能删除掉这个前缀,在尝试了多种方法后无果。
@CachePut(value = "api", key = "#key")
public String put(String key, String token) {
return token;
}
这是springboot 2.0 的前缀的源码内容
package org.springframework.data.redis.cache;
@FunctionalInterface
public interface CacheKeyPrefix {
String compute(String var1);
static CacheKeyPrefix simple() {
return (name) -> {
return name + "::";
};
}
}
我希望获取如下的结果
###我找到一个答案 在我这成功了,也有这个问题的也可以看看。
网址是这个: https://www.cnblogs.com/lzfho...
@Bean
public CacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
/* RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(3))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
.disableCachingNullValues();*/
// key前缀取消的方法
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(3))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
.computePrefixWith(this.keyPrefix);
RedisCacheManager cm=RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(redisCacheConfiguration).build();
cm.setTransactionAware(true);
return RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(redisCacheConfiguration)
.build();
}
// 复写方法
CacheKeyPrefix keyPrefix = new CacheKeyPrefix() {
@Override
public String compute(String cacheName) {
return "";
}
};