Redis RedisTemplate Serializer序列化配置

2019-09-13 10:02:39 | 编辑

spring boot中使用redis,好方便,但是有个问题,默认使用JdkSerializationRedisSerializer来序列化,缓存肯定是要序列化的,但是默认的序列化会有个问题,java端存完了,取redis-cli执行:key *   ,会发现键值都带有\xac\xed\x00\x05t\x00这种字符,这问题就大了,集群的话,别的机器不认识啊,所以需要修改序列化方式。

一般我们都会用RedisTemplate写个redis的工具类RedisUtils

修改之前:

@Component
public class RedisUtils {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    。。。。省略下面的方法直接调用redisTemplate 操作
}

修改之后:

@Component
public class RedisUtils {
    private RedisTemplate<String, Object> redisTemplate;
    /**
     * 解决序列化不一致的问题
     * @param 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 操作
}

就是这么简单,@Autowired会自动注入redisTemplate,并在类加载后执行一下。



登录后即可回复 登录 | 注册
    
关注编程学问公众号