真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springboot整合spring-data-redis遇到的坑

描述

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、陵川ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的陵川網(wǎng)站制作公司

使用springboot整合redis,使用默認(rèn)的序列化配置,然后使用redis-client去查詢時(shí)查詢不到相應(yīng)的key.

使用工具發(fā)現(xiàn),key的前面多了\xAC\xED\x00\x05t\x00!這樣一個(gè)串.

springboot整合spring-data-redis遇到的坑

而且value也是不能直觀可見的.

問題所在

使用springdataredis,默認(rèn)情況下是使用org.springframework.data.redis.serializer.JdkSerializationRedisSerializer這個(gè)類來做序列化.

org.springframework.data.redis.core.RedisTemplate代碼塊.

 public void afterPropertiesSet() {
    super.afterPropertiesSet();
    boolean defaultUsed = false;
    if (defaultSerializer == null) {
      defaultSerializer = new JdkSerializationRedisSerializer(
          classLoader != null ? classLoader : this.getClass().getClassLoader());
    }
    if (enableDefaultSerializer) {
      if (keySerializer == null) {
        keySerializer = defaultSerializer;
        defaultUsed = true;
      }
      if (valueSerializer == null) {
        valueSerializer = defaultSerializer;
        defaultUsed = true;
      }
      if (hashKeySerializer == null) {
        hashKeySerializer = defaultSerializer;
        defaultUsed = true;
      }
      if (hashValueSerializer == null) {
        hashValueSerializer = defaultSerializer;
        defaultUsed = true;
      }
    }
    if (enableDefaultSerializer && defaultUsed) {
      Assert.notNull(defaultSerializer, "default serializer null and not all serializers initialized");
    }
    if (scriptExecutor == null) {
      this.scriptExecutor = new DefaultScriptExecutor(this);
    }
    initialized = true;
  }

解決

手動(dòng)設(shè)置key的序列化方式為StringRedisSerializer,強(qiáng)制使用.

由于spring不支持泛型注入,這樣會(huì)導(dǎo)致所有的redisTemplate的key序列方式都為StringRedisSerializer. 同時(shí),最好在序列化對(duì)象保存時(shí)候手動(dòng)將其轉(zhuǎn)為json串后存入redis.易于在可視化工具中直接查看對(duì)應(yīng)value

@Bean
  public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
    RedisTemplate redisTemplate = new RedisTemplate();
    redisTemplate.setConnectionFactory(factory);
    RedisSerializer stringRedisSerializer = new StringRedisSerializer();//Long類型不可以會(huì)出現(xiàn)異常信息;
    redisTemplate.setKeySerializer(stringRedisSerializer);
    return redisTemplate;
  }

以上所述是小編給大家介紹的springboot整合spring-data-redis遇到的坑,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!


文章名稱:springboot整合spring-data-redis遇到的坑
網(wǎng)頁路徑:http://weahome.cn/article/pchgid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部