解决方案
需要将key和value进行序列化
使用如下序列化方式可以解决问题:
- StringRedisSerializer
- GenericToStringSerializer
- Jackson2JsonRedisSerializer
- JacksonJsonRedisSerializer
- JdkSerializationRedisSerializer
- OxmSerializer
- StringRedisSerializer
我在项目中使用如下方案,解决了问题:
注意在多个项目中需要同时使用一样的序列化方式
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@SuppressWarnings({ "unchecked", "rawtypes" })
@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
//spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化(key会乱码)
//手动指定键序列化类型使用stringRedisSerializer
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}