最近写项目时遇到的一个问题,当我向 redis 中 set 数据的时候 key 和 value出现\xac\xed\x00\x05t\x00\x06这些乱码,问题如图:
原因:spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。
解决方法:
在RedisUtil工具类中(redisTemplate所在类上)加上
@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}
将redisTemplate默认改为stringRedis序列化方式。OK,解决