最近貓哥開始在寫java項目時接觸使用redis,碰到的問題打算記錄一下。其中一個就是在使用RedisTemplate操作redis時,key值會出現類似\xer\xnh\x00\x06t\x00前綴。
查閱相關資料發現了原因:RedisTemplate默認序列化方式用的是JdkSerializationRedisSerializer,此時將key序列化方式改成StringRedisSerializer,將value序列化方式改爲Jackson2JsonRedisSerializer即可。
解決方法如下:
@Autowired
private RedisTemplate redisTemplate;
@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();//序列化爲String
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);//序列化爲Json
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
this.redisTemplate = redisTemplate;
}
如上即可解決出現的問題。