0
点赞
收藏
分享

微信扫一扫

SpringBoot下Redis序列化乱码问题


项目最初的序列化方案用的是JDK序列化类,但保存到redis里会产生乱码不方便查看管理。

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
redisTemplate.setKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
redisTemplate.setHashKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));
this.redisTemplate = redisTemplate;
}

经过上网查看是由于序列化类的问题,我们不用jdk的序列化方法,采用json的格式

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
this.redisTemplate = redisTemplate;
}

注意问题:

采用上述序列化器时需保证实体类里的所有get方法都有属性字段,否则反序列话时会出现问题,若没有需要加@JsonIgnore注解,序列化时会进行忽略。



举报

相关推荐

0 条评论