在用java 语言操作redis过程中,需要在redis 中存储中文,最初没有注意redis存储中文会出现乱码问题,使用命令查看,发现出现乱码。具体如图片:
redis数据库中的数据是程序写入的,这里是在客户端查看的结果,乱码以\x开头,英文字符可以正常显示。
查阅资料:
RedisTemplate默认序列化方式用的是JdkSerializationRedisSerializer,
解决方案:
将key序列化方式改成StringRedisSerializer,将value序列化方式改为Jackson2JsonRedisSerializer
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
jackson2JsonRedisSerializer.setObjectMapper(new ObjectMapper());
RedisSerializer stringSerializer = new StringRedisSerializer();
template.setKeySerializer(stringSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(stringSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
return template;
}
搞定。
情况二:已经修改了RedisTemplate的配置参数,但是在命令行界面查看仍然是\x开头,此情况的解决方案:
在打开redis命令行客户端时候添加 --raw参数,搞定:
添加参数后:
结束