<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      springboot~redis正確的使用

      redis實現了對數據的緩存,在項目里一些字典數據,會話數據,臨時性數據都會向redis來存儲,而在springboot里對redis也有支持,一般來說多個線程共同使用一個redis實現是有線程安全的風險的,而每個實現一個線程又太浪費資源,無法控制線程數量是非常危險的,所以就出現了一些redis線程池組件,下面說一下兩個主要的組件。

      • jedis 線程池主要是每個實例有自己的線程,線程可以從它建立的池子里獲取
      • lettuce lettuce是 apache推出的線程池工具,它的redis實例是可以被多個線程共享訪問的,提高了資源使用率

      redis序列化配置

      一般來說, redis-key采用字符串序列化; redis-value采用json序列化, json的體積小,可讀性高,不需要實現serializer接口。

      /**
       * 對redis的配置.
       */
      @Configuration
      public class RedisConfig {
      
          @Autowired
          private RedisConnectionFactory redisConnectionFactory;
      
          /**
           * redis重寫RedisTemplate.
           */
          @Bean
          public RedisTemplate redisTemplate() {
              RedisTemplate redisTemplate = new RedisTemplate();
              RedisSerializer<String> stringSerializer = new StringRedisSerializer();
              Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
              ObjectMapper om = new ObjectMapper();
              om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
              //序列化時允許非常量字段均輸出類型,即redis序列化后帶有類型
              om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
              jackson2JsonRedisSerializer.setObjectMapper(om);
              // redis key的序列化
              redisTemplate.setKeySerializer(stringSerializer);
              redisTemplate.setHashKeySerializer(stringSerializer);
      
              // redis value的序列化
              redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
              redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
      
              redisTemplate.setConnectionFactory(redisConnectionFactory);
              return redisTemplate;
          }
      }
      
      

      上面代碼中,om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL)產生的json串是帶有類型的,這樣再反序列化時可以直接通過類型去推斷。

      [
        "com.lind.basic.entity.Token",
        {
          "credentials": "ok",
          "region": "hello",
          "bucket": null
        }
      ]
      

      看一下添加和讀取的代碼

       @GetMapping("set")
          public String set() throws JsonProcessingException {
              Token token = Token.builder()
                      .credentials("ok")
                      .region("hello")
                      .build();
              redisTemplate.opsForValue().set("test:user", token);//redisTemplate幫我們序列化
              redisTemplate.opsForHash().put("author", "zzl", token);
              return "OK";
          }
      
          @GetMapping("get")
          public Token get() throws IOException {
              return (Token) redisTemplate.opsForValue().get("test:user");
          }
      

      注意:對于實體類Token它應該有一個無參構造方法,這是反序列化時需要的。

      posted @ 2020-05-28 09:47  張占嶺  閱讀(1633)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩AV片无码一区二区不卡| 久久亚洲日本激情战少妇| 国产日韩入口一区二区| 性色欲情网站| 成年午夜免费韩国做受视频| 精品国产亚洲区久久露脸| 国产一区二区高潮视频| 高邮市| 国产视频 视频一区二区| 国产精品一区二区小视频| 日本熟妇hdsex视频| 综合偷自拍亚洲乱中文字幕| 亚洲天堂男人影院| 亚洲二区中文字幕在线| 国产乱妇无码大片在线观看| 中文字幕亚洲精品第一页 | 久久精品国产九一九九九| 久久久久久久久18禁秘| 日本中文一区二区三区亚洲| 9lporm自拍视频区| 人妻精品久久久无码区色视| 玩弄丰满少妇人妻视频| 亚洲第一区二区快射影院| 无码人妻斩一区二区三区| 免费无遮挡无码永久视频| 成人爽a毛片免费| 国产精品不卡区一区二| 久章草这里只有精品| 国产不卡精品视频男人的天堂| 色悠久久网国产精品99| 成熟少妇XXXXX高清视频| 97视频精品全国免费观看| 巨熟乳波霸若妻在线播放| 天天综合亚洲色在线精品| 免费又黄又爽1000禁片| 免费看黄色亚洲一区久久| 91精品国产一二三产区| 最新亚洲av日韩av二区| 中文字幕有码无码AV| 日韩熟女熟妇久久精品综合| 三上悠亚精品一区二区久久|