spring-data-redis的value值有前缀乱码
时间: 2023-10-28 10:15:34 浏览: 80
spring-data-redis-2.3.9.RELEASE-API文档-中文版.zip
5星 · 资源好评率100%
可能是因为使用了默认的序列化器,而默认的序列化器会在value前面添加一些乱码前缀。解决方法是使用自定义的序列化器,或者指定使用Jackson序列化器。
使用自定义的序列化器可以继承RedisSerializer类,重写serialize和deserialize方法,然后将自定义的序列化器注入到RedisTemplate中。
使用Jackson序列化器可以通过配置RedisTemplate的valueSerializer属性来指定使用Jackson序列化器。具体配置如下:
```java
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// 使用Jackson序列化器
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
```
阅读全文