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

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

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

      Spring Boot 整合Redisson配置篇

      1. Spring Boot 整合Redisson配置篇
      2. Spring Boot 整合Redisson操作Redis基礎(chǔ)篇
      3. Redisson批量操作類RBuckets和管道利器RBatch

      摘要:介紹在Spring Boot 中,如何整合Redisson。

      綜述

      ??Redisson是Redis官方推薦的Java版的Redis客戶端。它提供了使用Redis的最簡單和最便捷的方法。Redisson的宗旨是促進(jìn)使用者對Redis的關(guān)注分離(Separation of Concern),從而讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上。

      ??小編在《Spring Boot 整合Jedis連接Redis和簡單使用》中,先介紹如何在Windows系統(tǒng)安裝Redis環(huán)境,然后在Spring Boot 項目中集成 Jedis,最后簡單地做了一個使用Jedis操作redis連接池的測試用例。本文介紹如何在Spring Boot項目中集成Redisson。

      引入Maven依賴

      Spring Boot版本: 2.5.x。

           <dependency>
               <groupId>org.redisson</groupId>
               <artifactId>redisson-spring-boot-starter</artifactId>
               <version>3.17.1</version>
           </dependency>
      

      ??集群模式除了適用于Redis集群環(huán)境,也適用于任何云計算服務(wù)商提供的集群模式,例如AWS ElastiCache集群版、Azure Redis Cache和阿里云(Aliyun)的云數(shù)據(jù)庫Redis版。

      YAML文件配置集群

      ??在YAML文件中添加如下集群化配置:

      spring:
        redis:
          cluster:
            nodeAddresses: [
                "redis://127.0.0.1:7005",
                "redis://127.0.0.1:7004",
                "redis://127.0.0.1:7003",
                "redis://127.0.0.1:7002",
                "redis://127.0.0.1:7001",
                "redis://127.0.0.1:7000"
            ]
          password: 123456
          single:
            address: "redis://127.0.0.1:6379"
            database: 7
      

      配置參數(shù)讀取類

      ??先創(chuàng)建一個讀取屬性的類,通過注解@ConfigurationProperties讀取YAML中定義的屬性:

      
      import lombok.Data;
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.stereotype.Component;
      
      import java.io.Serializable;
      import java.util.List;
      
      @Data
      @Component
      @ConfigurationProperties(prefix = "spring.redis")
      public class RedisConfigProperties implements Serializable {
      
          private static final long serialVersionUID = 8815222005846355408L;
          private String password;
          private cluster cluster;
          private Single single;
      
          public static class cluster {
              private List<String> nodeAddresses;
      
              public List<String> getNodeAddresses() {
                  return nodeAddresses;
              }
      
              public void setNodeAddresses(List<String> nodeAddresses) {
                  this.nodeAddresses = nodeAddresses;
              }
      
              @Override
              public String toString() {
                  return "{" +
                          "nodeAddresses=" + nodeAddresses +
                          '}';
              }
          }
          public static class Single {
              private String address;
              public Integer database;
      
              public String getAddress() {
                  return address;
              }
      
              public void setAddress(String address) {
                  this.address = address;
              }
      
              public Integer getDatabase() {
                  return database;
              }
      
              public void setDatabase(Integer database) {
                  this.database = database;
              }
      
              @Override
              public String toString() {
                  return "Single{" +
                          "address='" + address + '\'' +
                          ", database=" + database +
                          '}';
              }
          }
          public String getPassword() {
              return password;
          }
      
          public void setPassword(String password) {
              this.password = password;
          }
      
          public RedisConfigProperties.cluster getCluster() {
              return cluster;
          }
      
          public void setCluster(RedisConfigProperties.cluster cluster) {
              this.cluster = cluster;
          }
      }
      

      ??@ConfigurationProperties(prefix = "spring.redis")用于限制上述配置類只讀取redis屬性。

      Redisson 客戶端配置

      ??所有對Redisson的使用都是通過RedissonClient,調(diào)用如下方法 getRedissonClient() 創(chuàng)建出RedissonClient實例:

      import lombok.extern.slf4j.Slf4j;
      import org.redisson.Redisson;
      import org.redisson.api.RedissonClient;
      import org.redisson.client.codec.StringCodec;
      import org.redisson.config.ClusterServersConfig;
      import org.redisson.config.Config;
      import org.redisson.config.SingleServerConfig;
      import org.redisson.config.TransportMode;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      import java.io.IOException;
      import java.util.List;
      @Slf4j
      @Configuration
      public class MyRedissonConfig {
          @Autowired(required = false)
          private RedisConfigProperties redisConfigProperties;
      
          /**
           * 配置redisson集群
           * @return
           */
          @Bean(destroyMethod = "shutdown")
          public RedissonClient getRedissonClient() {
              List<String> clusterNodes = redisConfigProperties.getCluster().getNodeAddresses();
              log.info("【Redisson 配置】:{}", redisConfigProperties);
      
              Config config = new Config();
              //對象編碼選擇純字符串編碼
              config.setCodec(StringCodec.INSTANCE);
              ClusterServersConfig clusterServersConfig = config.useClusterServers()
                      .addNodeAddress(clusterNodes.toArray(new String[clusterNodes.size()]));
              //設(shè)置密碼
              clusterServersConfig.setPassword(redisConfigProperties.getPassword());
              //redis連接心跳檢測,防止一段時間過后,與redis的連接斷開
              clusterServersConfig.setPingConnectionInterval(32000);
              return Redisson.create(config);
          }
      
          /**
           * 單機配置
           * @return
           * @throws IOException
           */
         /* @Bean(destroyMethod = "shutdown")
          RedissonClient singleRedisson() throws IOException {
              log.info("【Redisson 配置】:{}", redisConfigProperties);
              // 創(chuàng)建配置
              Config config = new Config();
              config.setCodec(StringCodec.INSTANCE);
              config.setTransportMode(TransportMode.NIO);
              SingleServerConfig singleServerConfig = config.useSingleServer()
                      .setAddress(redisConfigProperties.getSingle().getAddress())
                      .setDatabase(redisConfigProperties.getSingle().getDatabase());
      
              return Redisson.create(config);
          }*/
      }
      

      ??得到redisson對象,之后的分布式鎖由redisson對象操作。節(jié)點地址nodeAddress一般為多個,這些配置信息放在yml中。java bean中已經(jīng)給所有需要配置的屬性寫上了官方默認(rèn)的初始值,你如果不考慮更改默認(rèn)值,實際上只需要在application.properties添加redis連接地址就好:

      #redis 單機地址
      spring.redisson.address=192.168.1.204:6379
      

      ??配置了redisson的信息之后,就可以在項目中使用@Autowired注入org.redisson.api.RedissonClient(redisson提供的默認(rèn)實現(xiàn)類是org.redisson.Redisson,且redisson-spring-boot-starter會自動往IOC容器中注冊org.redisson.Redisson)。啟動項目,在控制臺將打印配置信息:

      2022-05-03 10:51:32.102 [main] INFO -c.c.i.m.xxx.MyRedissonConfig - 【Redisson 配置】:RedisConfigProperties(password=123456, cluster={nodeAddresses=[redis://127.0.0.1:7005, redis://127.0.0.1:7004, redis://127.0.0.1:7003, redis://127.0.0.1:7002, redis://127.0.0.1:7001, redis://127.0.0.1:7000]}, single=Single{address='redis://127.0.0.1:6379', database=7})
      

      ??由此可見,配置類已經(jīng)成功加載YAML中的配置信息。

      知行合一

      ??整合Redisson后,可用的 Spring Beans包括如下幾個:

      • RedissonClient
      • RedissonRxClient
      • RedissonReactiveClient
      • RedisTemplate
      • ReactiveRedisTemplate

      ??下面提供一個使用Bean RedissonClient操作String的示例:

          @Autowired
          private RedissonClient redissonClient;
      
          private static void demo() {
              RBucket<Object> bucket = redissonClient.getBucket("string-demo");
              bucket.set("hello");
              System.out.println(bucket.get());
          }
      

      結(jié)束語

      ??本文主要為大家介紹了在spring boot中,集成redisson的最佳實踐。有需要的朋友可以拿來即用,希望能夠?qū)Υ蠹矣兴鶐椭?/p>

      ??“我亦無他,惟手熟爾。”合理利用自己每一分每一秒的時間來學(xué)習(xí)提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!祝各位早日升職加薪!

      Reference

      posted @ 2022-05-10 20:39  樓蘭胡楊  閱讀(29254)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美日本激情| 综合图区亚洲另类偷窥| 中美日韩在线一区黄色大片| 日韩中文字幕免费在线观看 | 日本免费人成视频在线观看| 又粗又硬又黄a级毛片| 国产成人欧美一区二区三区在线 | 亚洲av高清一区二区| 欧美日韩免费专区在线观看| 久久久久国产精品熟女影院| 伊人春色激情综合激情网| 免费看的一级毛片| 视频一区二区不中文字幕| 国产不卡一区二区在线视频| √天堂资源网最新版在线| 久久久久国色av免费观看性色| 国产精品一区二区三区麻豆| 精品尤物TV福利院在线网站| 亚洲国产精品毛片av不卡在线| 屯昌县| 国产亚洲中文字幕久久网| 久热综合在线亚洲精品| 国产乱人伦偷精品视频下| 久久成人伊人欧洲精品| 亚洲欧洲一区二区免费| 国产亚洲av产精品亚洲| 久久婷婷五月综合色精品| 亚洲中文字幕成人综合网| 91蜜臀国产自产在线观看| 亚洲精品乱码久久久久久蜜桃不卡 | 国产最新精品系列第三页| 无码人妻斩一区二区三区| 阳西县| 日韩 一区二区在线观看| 久久综合97丁香色香蕉| 中文字幕人乱码中文| 亚洲一区二区三区自拍天堂| 中文字幕在线精品国产| 人妻少妇无码精品专区| 久久天天躁狠狠躁夜夜躁| 九九热视频在线免费观看|