spring boot使用redisTemplate存储键值出现乱码

xiaoxiao2021-02-28  38

使用redisTemplate 存储后的键出现 \x  十六进制编码

 

127.0.0.1:6379> keys * 1) "online_699" 2) "\xac\xed\x00\x05t\x00\x0eallotment_3183" 3) "\xac\xed\x00\x05t\x00\x0eENCRY_KEY:3183" 4) "\xac\xed\x00\x05t\x00\x0eENCRY_KEY:3233" 5) "\xac\xed\x00\x05t\x00\x0eallotment_3187" 6) "\xac\xed\x00\x05t\x00\nWEBRTC:251"

解决方法如下:

添加如下配置,重启项目。

 

@Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 使用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); // 设置value的序列化规则和 key的序列化规则 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer); redisTemplate.setEnableDefaultSerializer(true); redisTemplate.afterPropertiesSet(); return redisTemplate; }

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2400258.html

最新回复(0)