存入redis的key出现 \xAC\xED\x00\x05t\x00\x0 现象
在存入redis后,查询时总是查不出对应 key 的值,后来发现是没有对数据进行序列化,导致出现异常。
出现该问题的原因
同一个应用包中的 redis template 之前为向 redis 存放使用 java 对象序列化的值,序列化方式和 string 的一般方式不同。
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, MobileTokenMiniprogramVo> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
// JSON格式序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 配置RedisTemplate
RedisTemplate<String, MobileTokenMiniprogramVo> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
RedisSerializer<?> stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}