为了账号安全,请及时绑定邮箱和手机立即绑定

redistemplate 设值的问题

redistemplate 设值的问题

墨色风雨 2019-03-01 10:38:49
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贡献1853条经验 获得超9个赞

重写redis的序列化方法比如改成JSON的

查看完整回答
反对 回复 2019-03-01
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果是String,建议改用StringRedisTemplate

查看完整回答
反对 回复 2019-03-01
?
繁星淼淼

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;

    }
查看完整回答
反对 回复 2019-03-01
?
12345678_0001

TA贡献1802条经验 获得超5个赞

使用redisTemplate,需要定义一下相关序列化的方法,默认的序列化使用的JDK的序列化方法, 是以OBJECT为对象进行byte操作进行的,导致会出现非正常字段。
使用SpringRedisTemple,或者指定序列化方法,比如String,Jackson等等,不过要注意数据类型,比如value是int型的,需要转成string,再进行string的序列化

查看完整回答
反对 回复 2019-03-01
  • 6 回答
  • 0 关注
  • 2000 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信