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进制数?
6 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
@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;
}
12345678_0001
TA贡献1802条经验 获得超5个赞
使用redisTemplate,需要定义一下相关序列化的方法,默认的序列化使用的JDK的序列化方法, 是以OBJECT为对象进行byte操作进行的,导致会出现非正常字段。
使用SpringRedisTemple,或者指定序列化方法,比如String,Jackson等等,不过要注意数据类型,比如value是int型的,需要转成string,再进行string的序列化
添加回答
举报
0/150
提交
取消