出现问题的代码环境:
//redis用的jdk默认的序列化,这样存进去会出现乱码
redisTemplate.opsForValue().set("name","scx");
-
原因:
spring-data-redis的RedisTemplate<K, V>在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化 -
解决方法:
- 更改序列化方式
@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;
}
- 注入StringRedisTemplate,使用此模板对象进行操作;
stringRedisTemplate.opsForValue().set("name","cx");
System.out.println(stringRedisTemplate.opsForValue().get("name"));