问题:

在SpringBoot中使用RedisTemplate操作redis时,会出现\xAC\xED\x00\x05t\x00\x08这种乱码问题,特别是在使用中文时。

原因分析:

原因是因为RedisTemplate中key和value的序列化方式都默认使用了jdk的序列化方式,含有中文时就会出现乱码。想要解决乱码问题我们只需要将key和value的序列化方式分别修改为字符串和json的形式即可。

我们增加一个RedisConfig类,用来对RedisTemplate的序列化方式进行修改:

@Configuration

public class RedisConfig {

    @Bean

    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {

        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();

        redisTemplate.setConnectionFactory(redisConnectionFactory);

        // 设置key的序列化规则和value的序列化规则

        redisTemplate.setKeySerializer(new StringRedisSerializer());

        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        redisTemplate.afterPropertiesSet();

        return redisTemplate;

    }

}

问题解决,可以写几个单元测试方法测试一下。