java redis存储键值包含\xac\xed\x00\x05t\x00\特殊字符

2019-09-13 10:02:39 | 编辑

java RedisTemplate操作redis后,想看一下是否成功,

就redis-cli执行:keys *

1) "\xac\xed\x00\x05t\x00\x04name"
2) "a"
3) "siteName"
4) "\xac\xed\x00\x05t\x00\bsiteName"
5) "myCache::userName"

发现存储键值包含\xac\xed\x00\x05t\x00\特殊字符。

原因:RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。


解决修改默认的序列化方式:

private RedisTemplate redisTemplate;
@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;
}



登录后即可回复 登录 | 注册
    
关注编程学问公众号