天天看點

Redisson官方文檔 - 2. 配置方法

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>對象裡的字段名稱相符。