问题描述
1. 直接使用RedisTemplate将数据存入到redis后查看发现是乱码,无法正常识别:如下方案进行处理:
@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;
}
2. 上述方案处理后,解决了乱码问题,但是又出现SESSION无法序列化的问题,导致出现错误“org.apache.shiro.session.mgt.SimpleSession cannot be cast to java.lang.String”,value序列化方式使用不当导致的结果
解决方法
需要指定key和value的序列化方式
@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}