Redisson程式化的配置方法是通過建構<code>Config</code>對象執行個體來實作的。例如:
Redisson既可以通過使用者提供的JSON或YAML格式的文本檔案來配置,也可以通過含有Redisson專有命名空間的,Spring架構格式的XML文本檔案來配置。
Redisson的配置檔案可以是JSON格式或YAML格式。
可以通過調用<code>Config.fromJSON</code>方法并指定一個<code>File</code>執行個體來實作讀取JSON格式的配置:
調用<code>Config.toJSON</code>方法可以将一個<code>Config</code>配置執行個體序列化為一個含有JSON資料類型的字元串:
也通過調用<code>config.fromYAML</code>方法并指定一個<code>File</code>執行個體來實作讀取YAML格式的配置:
調用<code>config.toYAML</code>方法可以将一個<code>Config</code>配置執行個體序列化為一個含有YAML資料類型的字元串:
Redisson為Spring架構提供了一套通過命名空間來配置執行個體的方式。
一個Redisson的執行個體可以通過這樣的方式來配置:
以下是關于<code>org.redisson.Config</code>類的配置參數,它适用于所有Redis組态模式(單機,叢集和哨兵)
預設值: <code>org.redisson.codec.JsonJacksonCodec</code>
Redisson的對象編碼類是用于将對象進行序列化和反序列化,以實作對該對象在Redis裡的讀取和存儲。Redisson提供了以下幾種的對象編碼應用,以供大家選擇:
編碼類名稱
說明
<code>org.redisson.codec.JsonJacksonCodec</code>
<code>org.redisson.codec.AvroJacksonCodec</code>
<code>org.redisson.codec.SmileJacksonCodec</code>
<code>org.redisson.codec.CborJacksonCodec</code>
<code>org.redisson.codec.MsgPackJacksonCodec</code>
<code>org.redisson.codec.IonJacksonCodec</code>
<code>org.redisson.codec.KryoCodec</code>
<code>org.redisson.codec.SerializationCodec</code>
JDK序列化編碼
<code>org.redisson.codec.FstCodec</code>
<code>org.redisson.codec.LZ4Codec</code>
<code>org.redisson.codec.SnappyCodec</code>
<code>org.redisson.client.codec.JsonJacksonMapCodec</code>
基于Jackson的映射類使用的編碼。可用于避免序列化類的資訊,以及用于解決使用<code>byte[]</code>遇到的問題。
<code>org.redisson.client.codec.StringCodec</code>
純字元串編碼(無轉換)
<code>org.redisson.client.codec.LongCodec</code>
純整長型數字編碼(無轉換)
<code>org.redisson.client.codec.ByteArrayCodec</code>
位元組數組編碼
<code>org.redisson.codec.CompositeCodec</code>
用來組合多種不同編碼在一起
預設值: <code>目前處理核數量 * 2</code>
這個線程池數量被所有<code>RTopic</code>對象監聽器,<code>RRemoteService</code>調用者和<code>RExecutorService</code>任務共同共享。
這個線程池數量是在一個Redisson執行個體内,被其建立的所有分布式資料類型和服務,以及底層用戶端所一同共享的線程池裡儲存的線程數量。
單獨提供一個用來執行所有<code>RTopic</code>對象監聽器,<code>RRemoteService</code>調用者和<code>RExecutorService</code>任務的線程池(ExecutorService)執行個體。
用于特别指定一個EventLoopGroup. EventLoopGroup是用來處理所有通過Netty與Redis服務之間的連接配接發送和接受的消息。每一個Redisson都會在預設情況下自己建立管理一個EventLoopGroup執行個體。是以,如果在同一個JVM裡面可能存在多個Redisson執行個體的情況下,采取這個配置實作多個Redisson執行個體共享一個EventLoopGroup的目的。
隻有<code>io.netty.channel.epoll.EpollEventLoopGroup</code>或<code>io.netty.channel.nio.NioEventLoopGroup</code>才是允許的類型。
預設值:<code>TransportMode.NIO</code>
可選參數:
<code>TransportMode.NIO</code>,
<code>TransportMode.EPOLL</code> - 需要依賴裡有<code>netty-transport-native-epoll</code>包(Linux)
<code>TransportMode.KQUEUE</code> - 需要依賴裡有 <code>netty-transport-native-kqueue</code>包(macOS)
預設值:<code>30000</code>
監控鎖的看門狗逾時時間機關為毫秒。該參數隻适用于分布式鎖的加鎖請求中未明确使用<code>leaseTimeout</code>參數的情況。如果該看門口未使用<code>lockWatchdogTimeout</code>去重新調整一個分布式鎖的<code>lockWatchdogTimeout</code>逾時,那麼這個鎖将變為失效狀态。這個參數可以用來避免由Redisson用戶端節點當機或其他原因造成死鎖的情況。
預設值:<code>true</code>
通過該參數來修改是否按訂閱釋出消息的接收順序出來消息,如果選否将對消息實行并行處理,該參數隻适用于訂閱釋出消息的情況。
預設值:<code>HIGHER_THROUGHPUT</code>
用來指定高性能引擎的行為
該參數僅限于Redisson PRO版本。
可選模式:
<code>HIGHER_THROUGHPUT</code> - 将高性能引擎切換到 高通量 模式。
<code>LOWER_LATENCY</code> - 将高性能引擎切換到 低延時 模式 。
叢集模式除了适用于Redis叢集環境,也适用于任何雲計算服務商提供的叢集模式,例如AWS ElastiCache叢集版、Azure Redis Cache和阿裡雲(Aliyun)的雲資料庫Redis版。
程式化配置叢集的用法:
介紹配置Redis叢集組态的文檔在這裡。 Redis叢集組态的最低要求是必須有三個主節點。Redisson的叢集模式的使用方法如下:
<code>ClusterServersConfig clusterConfig = config.useClusterServers();</code>
<code>ClusterServersConfig</code> 類的設定參數如下:
可以通過<code>host:port</code>的格式來添加Redis叢集節點的位址。多個節點可以一次性批量添加。
預設值: <code>1000</code>
對Redis叢集節點狀态掃描的時間間隔。機關是毫秒。
預設值: <code>SLAVE</code>(隻在從服務節點裡讀取)
注:在從服務節點裡讀取的資料說明已經至少有兩個節點儲存了該資料,確定了資料的高可用性。
設定讀取操作選擇節點的模式。
可用值為:
<code>SLAVE</code> - 隻在從服務節點裡讀取。
<code>MASTER</code> - 隻在主服務節點裡讀取。
<code>MASTER_SLAVE</code> - 在主從服務節點裡都可以讀取。
預設值:<code>SLAVE</code>(隻在從服務節點裡訂閱)
設定訂閱操作選擇節點的模式。
<code>SLAVE</code> - 隻在從服務節點裡訂閱。
<code>MASTER</code> - 隻在主服務節點裡訂閱。
預設值: <code>org.redisson.connection.balancer.RoundRobinLoadBalancer</code>
在多Redis服務節點的環境裡,可以選用以下幾種負載均衡方式選擇一個節點:
<code>org.redisson.connection.balancer.WeightedRoundRobinBalancer</code> - 權重輪詢排程算法
<code>org.redisson.connection.balancer.RoundRobinLoadBalancer</code> - 輪詢排程算法
<code>org.redisson.connection.balancer.RandomLoadBalancer</code> - 随機排程算法
預設值:<code>1</code>
多從節點的環境裡,每個 從服務節點裡用于釋出和訂閱連接配接的最小保持連接配接數(長連接配接)。Redisson内部經常通過釋出和訂閱來實作許多功能。長期保持一定數量的釋出訂閱連接配接是必須的。
預設值:<code>50</code>
多從節點的環境裡,每個 從服務節點裡用于釋出和訂閱連接配接的連接配接池最大容量。連接配接池的連接配接數量自動彈性伸縮。
預設值:<code>32</code>
多從節點的環境裡,每個 從服務節點裡用于普通操作(非 釋出和訂閱)的最小保持連接配接數(長連接配接)。長期保持一定數量的連接配接有利于提高瞬時讀取反映速度。
預設值:<code>64</code>
多從節點的環境裡,每個 從服務節點裡用于普通操作(非 釋出和訂閱)連接配接的連接配接池最大容量。連接配接池的連接配接數量自動彈性伸縮。
多節點的環境裡,每個 主節點的最小保持連接配接數(長連接配接)。長期保持一定數量的連接配接有利于提高瞬時寫入反應速度。
多主節點的環境裡,每個 主節點的連接配接池最大容量。連接配接池的連接配接數量自動彈性伸縮。
預設值:<code>10000</code>
如果目前連接配接池裡的連接配接數量超過了最小空閑連接配接數,而同時有連接配接空閑時間超過了該數值,那麼這些連接配接将會自動被關閉,并從連接配接池裡去掉。時間機關是毫秒。
同任何節點建立連接配接時的等待逾時。時間機關是毫秒。
預設值:<code>3000</code>
等待節點回複指令的時間。該時間從指令發送成功時開始計時。
預設值:<code>3</code>
如果嘗試達到 retryAttempts(指令失敗重試次數) 仍然不能将指令發送至某個指定的節點時,将抛出錯誤。如果嘗試在此限制之内發送成功,則開始啟用 timeout(指令等待逾時) 計時。
預設值:<code>1500</code>
在一條指令發送失敗以後,等待重試發送的時間間隔。時間機關是毫秒。
當與某個節點的連接配接斷開時,等待與其重建立立連接配接的時間間隔。時間機關是毫秒。
在某個節點執行相同或不同指令時,連續 失敗 failedAttempts(執行失敗最大次數) 時,該節點将被從可用節點清單裡清除,直到 reconnectionTimeout(重新連接配接時間間隔) 逾時以後再次嘗試。
預設值:<code>null</code>
用于節點身份驗證的密碼。
預設值:<code>5</code>
每個連接配接的最大訂閱數量。
在Redis節點裡顯示的用戶端名稱。
開啟SSL終端識别能力。
預設值:<code>JDK</code>
确定采用哪種方式(JDK或OPENSSL)來實作SSL連接配接。
指定SSL信任證書庫的路徑。
指定SSL信任證書庫的密碼。
指定SSL鑰匙庫的路徑。
指定SSL鑰匙庫的密碼。
配置叢集模式可以通過指定一個JSON格式的檔案來實作。以下是JSON格式的配置檔案樣本。檔案中的字段名稱必須與<code>ClusterServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置叢集模式可以通過指定一個YAML格式的檔案來實作。以下是YAML格式的配置檔案樣本。檔案中的字段名稱必須與<code>ClusterServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置叢集模式還可以通過Spring XML的命名空間來實作。以下是Spring XML格式的配置檔案樣本。檔案中的屬性名稱在采用了Spring架構的命名規範并與<code>ClusterServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
程式化配置雲托管模式的方法如下:
Redisson的雲托管模式的使用方法如下:
<code>ReplicatedServersConfig replicatedConfig = config.useReplicatedServers();</code>
<code>ReplicatedServersConfig</code> 類的設定參數如下:
可以通過<code>host:port</code>的格式來指定雲托管模式的多個Redis叢集節點的位址。多個節點可以一次性批量添加。所有的主從節點必須在配置階段全部展現出來。
對主節點變化節點狀态掃描的時間間隔。機關是毫秒。
在使用多個Elasticache Redis服務節點的環境裡,可以選用以下幾種負載均衡方式選擇一個節點:
預設值:<code>5000</code>
用來指定檢查節點DNS變化的時間間隔。使用的時候應該確定JVM裡的DNS資料的緩存時間保持在足夠低的範圍才有意義。用<code>-1</code>來禁用該功能。
多從節點的環境裡,每個 主節點的最小保持連接配接數(長連接配接)。長期保持一定數量的連接配接有利于提高瞬時寫入反應速度。
主節點的連接配接池最大容量。連接配接池的連接配接數量自動彈性伸縮。
預設值:<code>0</code>
嘗試連接配接的資料庫編号。
配置雲托管模式可以通過指定一個JSON格式的檔案來實作。以下是JSON格式的配置檔案樣本。檔案中的字段名稱必須與<code>ReplicatedServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置雲托管模式可以通過指定一個YAML格式的檔案來實作。以下是YAML格式的配置檔案樣本。檔案中的字段名稱必須與<code>ReplicatedServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置雲托管模式還可以通過Spring XML的命名空間來實作。以下是Spring XML格式的配置檔案樣本。檔案中的屬性名稱在采用了Spring架構的命名規範并與<code>ReplicatedServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
程式化配置方法:
<code>SingleServerConfig singleConfig = config.useSingleServer();</code>
<code>SingleServerConfig</code> 類的設定參數如下:
可以通過<code>host:port</code>的格式來指定節點位址。
用于釋出和訂閱連接配接的最小保持連接配接數(長連接配接)。Redisson内部經常通過釋出和訂閱來實作許多功能。長期保持一定數量的釋出訂閱連接配接是必須的。
用于釋出和訂閱連接配接的連接配接池最大容量。連接配接池的連接配接數量自動彈性伸縮。
最小保持連接配接數(長連接配接)。長期保持一定數量的連接配接有利于提高瞬時寫入反應速度。
連接配接池最大容量。連接配接池的連接配接數量自動彈性伸縮。
預設值:<code>false</code>
在啟用該功能以後,Redisson将會監測DNS的變化情況。
監測DNS的變化情況的時間間隔。
同節點建立連接配接時的等待逾時。時間機關是毫秒。
配置單節點模式可以通過指定一個JSON格式的檔案來實作。以下是JSON格式的配置檔案樣本。檔案中的字段名稱必須與<code>SingleServerConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置單節點模式可以通過指定一個YAML格式的檔案來實作。以下是YAML格式的配置檔案樣本。檔案中的字段名稱必須與<code>SingleServerConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置單節點模式還可以通過Spring XML的命名空間來實作。以下是Spring XML格式的配置檔案樣本。檔案中的屬性名稱在采用了Spring架構的命名規範并與<code>SingleServerConfig</code>和<code>Config</code>對象裡的字段名稱相符。
程式化配置哨兵模式的方法如下:
配置Redis哨兵服務的官方文檔在這裡。Redisson的哨兵模式的使用方法如下:
<code>SentinelServersConfig sentinelConfig = config.useSentinelServers();</code>
<code>SentinelServersConfig</code> 類的設定參數如下:
主伺服器的名稱是哨兵程序中用來監測主從服務切換情況的。
可以通過<code>host:port</code>的格式來指定哨兵節點的位址。多個節點可以一次性批量添加。
在使用多個Redis服務節點的環境裡,可以選用以下幾種負載均衡方式選擇一個節點:
配置哨兵模式可以通過指定一個JSON格式的檔案來實作。以下是JSON格式的配置檔案樣本。檔案中的字段名稱必須與<code>SentinelServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置哨兵模式可以通過指定一個YAML格式的檔案來實作。以下是YAML格式的配置檔案樣本。檔案中的字段名稱必須與<code>SentinelServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置哨兵模式還可以通過Spring XML的命名空間來實作。以下是Spring XML格式的配置檔案樣本。檔案中的屬性名稱在采用了Spring架構的命名規範并與<code>SentinelServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
程式化配置主從模式的用法:
介紹配置Redis主從服務組态的文檔在這裡. Redisson的主從模式的使用方法如下:
<code>MasterSlaveServersConfig masterSlaveConfig = config.useMasterSlaveServers();</code>
<code>MasterSlaveServersConfig</code> 類的設定參數如下:
可以通過<code>host:port</code>的格式來指定主節點位址。
可以通過<code>host:port</code>的格式來指定從節點的位址。多個節點可以一次性批量添加。
配置主從模式可以通過指定一個JSON格式的檔案來實作。以下是JSON格式的配置檔案樣本。檔案中的字段名稱必須與<code>MasterSlaveServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置主從模式可以通過指定一個YAML格式的檔案來實作。以下是YAML格式的配置檔案樣本。檔案中的字段名稱必須與<code>MasterSlaveServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。
配置主從模式還可以通過Spring XML的命名空間來實作。以下是Spring XML格式的配置檔案樣本。檔案中的屬性名稱在采用了Spring架構的命名規範并與<code>MasterSlaveServersConfig</code>和<code>Config</code>對象裡的字段名稱相符。