redisTemplate.opsForValue().set("one", "1");
上面运行后,在 redis 看的结果
127.0.0.1:6379> get one
"xacxedx00x05tx00x011"
redisTemplate.opsForValue().set("one", "this");
127.0.0.1:6379> get one
"xacxedx00x05tx00x04this"
这是怎么回事啊?
怎样去除那些斜杠的16进制数?
redisTemplate.opsForValue().set("one", "1");
上面运行后,在 redis 看的结果
127.0.0.1:6379> get one
"xacxedx00x05tx00x011"
redisTemplate.opsForValue().set("one", "this");
127.0.0.1:6379> get one
"xacxedx00x05tx00x04this"
这是怎么回事啊?
怎样去除那些斜杠的16进制数?
@Bean
@SuppressWarnings({"rawtypes","unchecked"})
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
{
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(jackson2JsonRedisSerializer);
return template;
}
使用redisTemplate,需要定义一下相关序列化的方法,默认的序列化使用的JDK的序列化方法, 是以OBJECT为对象进行byte操作进行的,导致会出现非正常字段。
使用SpringRedisTemple,或者指定序列化方法,比如String,Jackson等等,不过要注意数据类型,比如value是int型的,需要转成string,再进行string的序列化
4 回答1.3k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答724 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
重写redis的序列化方法比如改成JSON的