<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          redisson-spring-boot-starterRedisson Spring Boot 腳手架

          聯(lián)合創(chuàng)作 · 2023-10-01 04:57

          redisson-spring-boot-starter

          目前有很多項目還在使用jedis的 setNx 充當(dāng)分布式鎖,然而這個鎖是有問題的,redisson是java支持redis的redlock的唯一實現(xiàn), 官方目前只有java web版本,配置起來很麻煩.集成該項目后只需要極少的配置.就能夠使用redisson的全部功能. 目前支持集群模式,云托管模式,單Redis節(jié)點模式,哨兵模式,主從模式 配置. 支持 可重入鎖,公平鎖,聯(lián)鎖,紅鎖,讀寫鎖 鎖定模式

          介紹

          1. 我們?yōu)槭裁葱枰?code>redisson?

          redisson目前是官方唯一推薦的java版的分布式鎖,他支持 redlock.具體請查看 官方文檔

          1. jedis為什么有問題?

          目前jedis是只支持單機的.

          jedis setNx 和設(shè)置過期時間是不同步的,在某些極端的情況下會發(fā)生死鎖.導(dǎo)致程序崩潰.如果沒有設(shè)置value, 線程1可能會釋放線程2的鎖 詳情看下這篇 博客

          軟件架構(gòu)

          1. redisson
          2. spring boot

          安裝教程

          1. 引入 pom.xml
          <dependency>
              <groupId>com.zengtengpeng</groupId>
              <artifactId>redisson-spring-boot-starter</artifactId>
              <version>1.0.0</version>
          </dependency>

          使用說明

          1. 在 application.properties 增加
          #單Redis節(jié)點模式
          redisson.singleServerConfig.address=127.0.0.1:6379

          2.在方法增加 @Lock 注解

          //支持 spel 表達式 如果后面需要接字符串的話請用`+`連接. 字符串一定要打`單引號`
          @Lock(keys = "#user.name+'locks'")
          public String test(User user) {
              System.out.println("進來了test");
              return "test";
          }
          
          1. 完畢

          進階篇

          @Lock 注解參數(shù)介紹

              /**
               * REENTRANT(可重入鎖),FAIR(公平鎖),MULTIPLE(聯(lián)鎖),REDLOCK(紅鎖),READ(讀鎖), WRITE(寫鎖), 
               * AUTO(自動模式,當(dāng)參數(shù)只有一個.使用 REENTRANT 參數(shù)多個 MULTIPLE)
               */
              LockModel lockModel() default LockModel.AUTO;
              /**
               * 需要鎖定的keys
               * @return
               */
              String[] keys() default {};
              /**
               * 鎖超時時間,默認30000毫秒(可在配置文件全局設(shè)置)
               * @return
               */
              long lockWatchdogTimeout() default 0;
              /**
               * 等待加鎖超時時間,默認10000毫秒 -1 則表示一直等待(可在配置文件全局設(shè)置)
               * @return
               */
              long attemptTimeout() default 0;

          如何使用redisson 客戶端實現(xiàn)自定義操作,只需要在spring 容器中注入redisson客戶端就行,如下:

              @Autowired
              private RedissonClient redissonClient;

          集群模式配置(也可以使用yml寫法)

          單例模式

          單機版redis

          #單Redis節(jié)點模式
          redisson.singleServerConfig.address=127.0.0.1:6379

          集群模式

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

          #集群模式
          redisson.model=CLUSTER
          #redis機器.一直累加下去
          redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
          redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
          redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

          云托管模式

          云托管模式適用于任何由云計算運營商提供的Redis云服務(wù),包括亞馬遜云的AWS ElastiCache、微軟云的Azure Redis 緩存和阿里云(Aliyun)的云數(shù)據(jù)庫Redis版

          #云托管模式
          redisson.model=REPLICATED
          #redis機器.一直累加下去
          redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
          redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
          redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

          哨兵模式

          redisson.model=SENTINEL
          #主服務(wù)器的名稱是哨兵進程中用來監(jiān)測主從服務(wù)切換情況的。
          redisson.multiple-server-config.master-name="mymaster"
          #redis機器.一直累加下去
          redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
          redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
          redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

          主從模式

          redisson.model=MASTERSLAVE
          #第一臺機器就是主庫.其他的為從庫
          redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
          redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
          redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381

          屬性列表(基本都是官方參數(shù).我將參數(shù)整合了下.分為 公共參數(shù),單例模式參數(shù),集群模式參數(shù))

          1.公共參數(shù)

          屬性名 默認值 備注
          redisson.password   用于節(jié)點身份驗證的密碼。
          redisson.attemptTimeout 10000L 等待獲取鎖超時時間,-1則是一直等待
          redisson.lockModel 單個key默認可重入鎖多個key默認聯(lián)鎖 鎖的模式.如果不設(shè)置, REENTRANT(可重入鎖),FAIR(公平鎖),MULTIPLE(聯(lián)鎖),REDLOCK(紅鎖),READ(讀鎖), WRITE(寫鎖)
          redisson.model SINGLE 集群模式:SINGLE(單例),SENTINEL(哨兵),MASTERSLAVE(主從),CLUSTER(集群),REPLICATED(云托管)
          redisson.codec org.redisson.codec.JsonJacksonCodec Redisson的對象編碼類是用于將對象進行序列化和反序列化,以實現(xiàn)對該對象在Redis里的讀取和存儲
          redisson.threads 當(dāng)前處理核數(shù)量 * 2 這個線程池數(shù)量被所有RTopic對象監(jiān)聽器,RRemoteService調(diào)用者和RExecutorService任務(wù)共同共享。
          redisson.nettyThreads 當(dāng)前處理核數(shù)量 * 2 這個線程池數(shù)量是在一個Redisson實例內(nèi),被其創(chuàng)建的所有分布式數(shù)據(jù)類型和服務(wù),以及底層客戶端所一同共享的線程池里保存的線程數(shù)量。
          redisson.transportMode NIO TransportMode.NIO,TransportMode.EPOLL - 需要依賴?yán)镉衝etty-transport-native-epoll包(Linux) TransportMode.KQUEUE - 需要依賴?yán)镉?netty-transport-native-kqueue包(macOS)
          redisson.idleConnectionTimeout 10000 如果當(dāng)前連接池里的連接數(shù)量超過了最小空閑連接數(shù),而同時有連接空閑時間超過了該數(shù)值,那么這些連接將會自動被關(guān)閉,并從連接池里去掉。時間單位是毫秒
          redisson.connectTimeout 10000 同任何節(jié)點建立連接時的等待超時。時間單位是毫秒。
          redisson.timeout 3000 等待節(jié)點回復(fù)命令的時間。該時間從命令發(fā)送成功時開始計時。
          redisson.retryAttempts 3 如果嘗試達到 retryAttempts(命令失敗重試次數(shù)) 仍然不能將命令發(fā)送至某個指定的節(jié)點時,將拋出錯誤。如果嘗試在此限制之內(nèi)發(fā)送成功,則開始啟用 timeout(命令等待超時) 計時。
          redisson.retryInterval 1500 在一條命令發(fā)送失敗以后,等待重試發(fā)送的時間間隔。時間單位是毫秒。
          redisson.subscriptionsPerConnection 5 每個連接的最大訂閱數(shù)量。
          redisson.clientName   在Redis節(jié)點里顯示的客戶端名稱。
          redisson.sslEnableEndpointIdentification true 開啟SSL終端識別能力。
          redisson.sslProvider JDK 確定采用哪種方式(JDK或OPENSSL)來實現(xiàn)SSL連接。
          redisson.sslTruststore   指定SSL信任證書庫的路徑。
          redisson.sslTruststorePassword   指定SSL信任證書庫的密碼。
          redisson.sslKeystore   指定SSL鑰匙庫的路徑。
          redisson.sslKeystorePassword   指定SSL鑰匙庫的密碼。
          redisson.lockWatchdogTimeout 30000 監(jiān)控鎖的看門狗超時時間單位為毫秒。該參數(shù)只適用于分布式鎖的加鎖請求中未明確使用leaseTimeout參數(shù)的情況。如果該看門口未使用lockWatchdogTimeout去重新調(diào)整一個分布式鎖的lockWatchdogTimeout超時,那么這個鎖將變?yōu)槭顟B(tài)。這個參數(shù)可以用來避免由Redisson客戶端節(jié)點宕機或其他原因造成死鎖的情況。
          redisson.keepPubSubOrder true 通過該參數(shù)來修改是否按訂閱發(fā)布消息的接收順序出來消息,如果選否將對消息實行并行處理,該參數(shù)只適用于訂閱發(fā)布消息的情況。
          1. 單例模式參數(shù)
          屬性名 默認值 備注
          redisson.singleServerConfig.address   服務(wù)器地址,必填ip:port
          redisson.singleServerConfig.database 0 嘗試連接的數(shù)據(jù)庫編號。
          redisson.singleServerConfig.subscriptionConnectionMinimumIdleSize 1 用于發(fā)布和訂閱連接的最小保持連接數(shù)(長連接)。Redisson內(nèi)部經(jīng)常通過發(fā)布和訂閱來實現(xiàn)許多功能。長期保持一定數(shù)量的發(fā)布訂閱連接是必須的。
          redisson.singleServerConfig.subscriptionConnectionPoolSize 50 用于發(fā)布和訂閱連接的連接池最大容量。連接池的連接數(shù)量自動彈性伸縮。
          redisson.singleServerConfig.connectionMinimumIdleSize 32 最小保持連接數(shù)(長連接)。長期保持一定數(shù)量的連接有利于提高瞬時寫入反應(yīng)速度。
          redisson.singleServerConfig.connectionPoolSize 64 連接池最大容量。連接池的連接數(shù)量自動彈性伸縮。
          redisson.singleServerConfig.dnsMonitoringInterval 5000 用來指定檢查節(jié)點DNS變化的時間間隔。使用的時候應(yīng)該確保JVM里的DNS數(shù)據(jù)的緩存時間保持在足夠低的范圍才有意義。用-1來禁用該功能。
          1. 集群模式
          屬性名 默認值 備注
          redisson.multiple-server-config.node-addresses   服務(wù)器節(jié)點地址.必填 
          redisson.multiple-server-config.node-addresses[0]=127.0.0.1:6379
          redisson.multiple-server-config.node-addresses[1]=127.0.0.1:6380
          redisson.multiple-server-config.node-addresses[2]=127.0.0.1:6381
          redisson.multiple-server-config.loadBalancer org.redisson.connection.balancer.RoundRobinLoadBalancer 在多Redis服務(wù)節(jié)點的環(huán)境里,可以選用以下幾種負載均衡方式選擇一個節(jié)點:
          org.redisson.connection.balancer.WeightedRoundRobinBalancer - 權(quán)重輪詢調(diào)度算法
          org.redisson.connection.balancer.RoundRobinLoadBalancer - 輪詢調(diào)度算法
          org.redisson.connection.balancer.RandomLoadBalancer - 隨機調(diào)度算法
          redisson.multiple-server-config.slaveConnectionMinimumIdleSize 32 多從節(jié)點的環(huán)境里,每個 從服務(wù)節(jié)點里用于普通操作(非 發(fā)布和訂閱)的最小保持連接數(shù)(長連接)。長期保持一定數(shù)量的連接有利于提高瞬時讀取反映速度。
          redisson.multiple-server-config.slaveConnectionPoolSize 64 多從節(jié)點的環(huán)境里,每個 從服務(wù)節(jié)點里用于普通操作(非 發(fā)布和訂閱)連接的連接池最大容量。連接池的連接數(shù)量自動彈性伸縮。
          redisson.multiple-server-config.masterConnectionMinimumIdleSize 32 多節(jié)點的環(huán)境里,每個 主節(jié)點的最小保持連接數(shù)(長連接)。長期保持一定數(shù)量的連接有利于提高瞬時寫入反應(yīng)速度。
          redisson.multiple-server-config.masterConnectionPoolSize 64 多主節(jié)點的環(huán)境里,每個 主節(jié)點的連接池最大容量。連接池的連接數(shù)量自動彈性伸縮。
          redisson.multiple-server-config.readMode SLAVE 設(shè)置讀取操作選擇節(jié)點的模式。 可用值為: SLAVE - 只在從服務(wù)節(jié)點里讀取。 MASTER - 只在主服務(wù)節(jié)點里讀取。 MASTER_SLAVE - 在主從服務(wù)節(jié)點里都可以讀取。
          redisson.multiple-server-config.subscriptionMode SLAVE 設(shè)置訂閱操作選擇節(jié)點的模式。 可用值為: SLAVE - 只在從服務(wù)節(jié)點里訂閱。 MASTER - 只在主服務(wù)節(jié)點里訂閱。
          redisson.multiple-server-config.subscriptionConnectionMinimumIdleSize 1 用于發(fā)布和訂閱連接的最小保持連接數(shù)(長連接)。Redisson內(nèi)部經(jīng)常通過發(fā)布和訂閱來實現(xiàn)許多功能。長期保持一定數(shù)量的發(fā)布訂閱連接是必須的。 redisson.multiple-server-config.subscriptionConnectionPoolSize
          redisson.multiple-server-config.dnsMonitoringInterval 5000 監(jiān)測DNS的變化情況的時間間隔。
          redisson.multiple-server-config.scanInterval 1000 (集群,哨兵,云托管模特特有) 對Redis集群節(jié)點狀態(tài)掃描的時間間隔。單位是毫秒。
          redisson.multiple-server-config.database 0 (哨兵模式,云托管,主從模式特有)嘗試連接的數(shù)據(jù)庫編號。
          redisson.multiple-server-config.masterName   (哨兵模式特有)主服務(wù)器的名稱是哨兵進程中用來監(jiān)測主從服務(wù)切換情況的。
          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美精品xxx | 无码高清在线看 | 噜噜噜射射射 | 国产一区二区三区免费看 | 亚洲黄色视频网站在线 |