使用RedisTemplate添加数据 数据乱码
redisTemplate默认采用的事JDK的的默认序列化策略,而不是String的序列化策略
注入一个配置类
@Configuration
public class RedisTemplateConfig {
@Autowired
private RedisTemplate redisTemplate;
@Bean
public RedisTemplate redisTemplate(){
RedisTemplate<String,Object> template=new RedisTemplate<>();
//配置连接工厂
template.setConnectionFactory(factory);
//使用Jackson3JonRedisSerializer来序列化redis的value值(默认使用JDk序列化方式)
GenericJackson2JsonRedisSerializer jacksonSeial=new GenericJackson2JsonRedisSerializer();
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer 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);
//值采用json序列化
template.setValueSerializer(jackson2JsonRedisSerializer);
//使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
//设置hash key和value序列化模式
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(jacksonSeial);
template.afterPropertiesSet();
return template;
}
}
这样就不会乱码了,可以直接存对象到redis,因为是通过序列化的形式存储的,所以一定记得javaBean要实现Serializable接口哈