配置

TOC

编程式配置

编程式配置通过 Config 对象实例来执行。如:

  1. Config config =newConfig();
  2. config.setUseLinuxNativeEpoll(true);
  3. config.useClusterServers()
  4. .addNodeAddress("127.0.0.1:7181");

声明式配置

Redisson 配置可从 JSON 或 YAML 格式的文件中加载。

要从 JSON 读取配置,可使用 Config.fromJSON 方法指向配置源来完成:

  1. Config config =Config.fromJSON(newFile("config-file.json"));
  2. RedissonClient redisson =Redisson.create(config);

要将配置写出为 JSON ,可使用 Config.toJSON 方法:

  1. Config config =newConfig();
  2. // ... many settings are set here
  3. String jsonFormat = config.toJSON();

要从 YAML 读取配置,可使用 Config.fromYAML 方法指向配置源来完成:

  1. Config config =Config.fromYAML(newFile("config-file.yaml"));
  2. RedissonClient redisson =Redisson.create(config);

要将配置写出为 YAML ,可使用 Config.toYAML 方法:

  1. Config config =newConfig();
  2. // ... many settings are set here
  3. String yamlFormat = config.toYAML();

通用设置

以下设置属于 org.redisson.Config 对象,且对所有模式都是通用的:

codec

默认值: org.redisson.codec.JsonJacksonCodec

Redis 数据解编码器。用于读写 Redis 数据。支持多种实现:

Codec 类名描述
org.redisson.codec.JsonJacksonCodecJackson JSON codec
org.redisson.codec.CborJacksonCodecCBOR 二进制 json codec
org.redisson.codec.MsgPackJacksonCodecMsgPack 二进制 json codec
org.redisson.codec.KryoCodecKryo 二进制 codec
org.redisson.codec.SerializationCodecJDK 序列化 codec
org.redisson.codec.FstCodecFST 10 倍速且 100% JDK 序列化兼容的 codec
org.redisson.codec.LZ4CodecLZ4 压缩 codec
org.redisson.codec.SnappyCodecSnappy 压缩 codec
org.redisson.client.codec.StringCodec简单 String codec
org.redisson.client.codec.LongCodec简单 Long codec

threads

默认值: current_processors_amount * 2

由所有 redis 节点客户端所共享的线程数量。

eventLoopGroup

使用外部的 EventLoopGroup。EventLoopGroup 通过自己的线程来处理所有和 Redis 服务器相连的 Netty 链接。
每个 Redisson 客户端会默认创建一个自己的 EventLoopGroup。
因此若相同的 JVM 中存在多个 Redisson 实例,它会在它们之间共享一个 EventLoopGroup。

只允许使用 io.netty.channel.epoll.EpollEventLoopGroupio.netty.channel.nio.NioEventLoopGroup

useLinuxNativeEpoll

默认值: false

当服务器绑定到 loopback 接口时激活一个 unix socket。
同样也用于激活 epoll 协议。
netty-transport-native-epoll 类库需包含在 classpath 中。

集群模式" class="reference-link"> 集群模式

编程式配置示例:

  1. Config config =newConfig();
  2. config.useClusterServers()
  3. .setScanInterval(2000)// cluster state scan interval in milliseconds
  4. .addNodeAddress("127.0.0.1:7000","127.0.0.1:7001")
  5. .addNodeAddress("127.0.0.1:7002");
  6. RedissonClient redisson =Redisson.create(config);

集群设置

有关 Redis 服务器集群配置的文档在 这里
最小的集群配置需要至少三个主节点。
集群连接模式可通过以下代码激活:

  1. ClusterServersConfig clusterConfig = config.useClusterServers();

ClusterServersConfig 设置项如下:

addNodeAddress

host:port 格式添加 Redis 集群节点地址。可以一次性添加多个节点。

scanInterval

默认值: 1000

以毫秒为单位的 Redis 集群扫描间隔。

readFromSlaves

默认值: true

读操作是否可使用集群从节点。

loadBalancer

默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer

其它实现有: org.redisson.connection.balancer.WeightedRoundRobinBalancer,
redisson.connection.balancer.RandomLoadBalancer

多个 Redis 从服务器间的连接负载均衡器。

slaveSubscriptionConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲订阅 (pub/sub) 连接量。

slaveSubscriptionConnectionPoolSize

默认值: 25

每个 从节点的 Redis ‘从’节点最大订阅 (pub/sub) 连接池大小。

slaveConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲连接量。

slaveConnectionPoolSize

默认值: 100

每个 从节点的 Redis ‘从’节点最大连接池大小。

masterConnectionMinimumIdleSize

默认值: 5

每个 从节点的 Redis ‘主’节点最小空闲连接量。

masterConnectionPoolSize

默认值: 100

Redis ‘主’节点最大连接池大小。

idleConnectionTimeout

默认值: 10000

若池化连接在某段 timeout 时间内没有被使用且当前连接量超过最小空闲连接池时,
它将会被关闭并从池中移除。其值的单位是毫秒。

connectTimeout

默认值: 1000

连接到任何 Redis 服务器的超时时间。

timeout

默认值: 1000

Redis 服务器响应的超时时间。从 Redis 命令被成功发送时开始计算。其值的单位是毫秒。

retryAttempts

默认值: 3

若 Redis 命令在超过 retryAttempts 次不能发送被 Redis 服务器,则将抛出一个错误。
但若成功发送,则将开始 timeout

retryInterval

默认值: 1000

发送 Redis 命令重试的时间间隔。其值的单位是毫秒。

reconnectionTimeout

默认值: 3000

Redis 服务器重连尝试的超时时间。在每次这种超时事件发生时, Redisson 会尝试连接到失联的 Redis 服务器。
其值的单位是毫秒。

failedAttempts

默认值: 3

当任何 Redis 命令的连续的未成功执行尝试到达 failedAttempts 时,
这个 Redis 服务器将被从一个内部的可用从节点列表中移除。

database

默认值: 0

针对 Redis 连接的数据库索引。

password

默认值: null

Redis 服务器授权的密码。

subscriptionsPerConnection

默认值: 5

每个 Redis 连接上的订阅的限制

clientName

默认值: null

客户端连接的名称。

集群 JSON 和 YAML 配置格式

以下是 JSON 格式的集群配置示例。
所有的属性名称都匹配 ClusterServersConfigConfig 对象的属性名称。

  1. {
  2. "clusterServersConfig":{
  3. "idleConnectionTimeout":10000,
  4. "pingTimeout":1000,
  5. "connectTimeout":1000,
  6. "timeout":1000,
  7. "retryAttempts":3,
  8. "retryInterval":1000,
  9. "reconnectionTimeout":3000,
  10. "failedAttempts":3,
  11. "password":null,
  12. "subscriptionsPerConnection":5,
  13. "clientName":null,
  14. "loadBalancer":{
  15. "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
  16. },
  17. "slaveSubscriptionConnectionMinimumIdleSize":1,
  18. "slaveSubscriptionConnectionPoolSize":25,
  19. "slaveConnectionMinimumIdleSize":5,
  20. "slaveConnectionPoolSize":100,
  21. "masterConnectionMinimumIdleSize":5,
  22. "masterConnectionPoolSize":100,
  23. "readMode":"SLAVE",
  24. "nodeAddresses":[
  25. "//127.0.0.1:7004",
  26. "//127.0.0.1:7001",
  27. "//127.0.0.1:7000"
  28. ],
  29. "scanInterval":1000
  30. },
  31. "threads":0,
  32. "codec":null,
  33. "useLinuxNativeEpoll":false,
  34. "eventLoopGroup":null
  35. }

以下是 YAML 格式的集群配置示例。
所有的属性名称都匹配 ClusterServersConfigConfig 对象的属性名称。

  1. ---
  2. clusterServersConfig:
  3. idleConnectionTimeout:10000
  4. pingTimeout:1000
  5. connectTimeout:1000
  6. timeout:1000
  7. retryAttempts:3
  8. retryInterval:1000
  9. reconnectionTimeout:3000
  10. failedAttempts:3
  11. password:null
  12. subscriptionsPerConnection:5
  13. clientName:null
  14. loadBalancer:!<org.redisson.connection.balancer.RoundRobinLoadBalancer>{}
  15. slaveSubscriptionConnectionMinimumIdleSize:1
  16. slaveSubscriptionConnectionPoolSize:25
  17. slaveConnectionMinimumIdleSize:5
  18. slaveConnectionPoolSize:100
  19. masterConnectionMinimumIdleSize:5
  20. masterConnectionPoolSize:100
  21. readMode:"SLAVE"
  22. nodeAddresses:
  23. -"//127.0.0.1:7004"
  24. -"//127.0.0.1:7001"
  25. -"//127.0.0.1:7000"
  26. scanInterval:1000
  27. threads:0
  28. codec:!<org.redisson.codec.JsonJacksonCodec>{}
  29. useLinuxNativeEpoll:false
  30. eventLoopGroup:null

Elasticache 模式

编程式配置示例:

  1. Config config =newConfig();
  2. config.useElasticacheServers()
  3. .setScanInterval(2000)// 主节点变更扫描间隔
  4. .addNodeAddress("127.0.0.1:7000","127.0.0.1:7001")
  5. .addNodeAddress("127.0.0.1:7002");
  6. RedissonClient redisson =Redisson.create(config);

Elasticache 设置

有关 AWS Elasticache Redis 服务器配置的文档在
这里

Elasticache 连接模式可由以下代码激活:

  1. ElasticacheServersConfig clusterConfig = config.useElasticacheServers();

ElasticacheServersConfig 设置项如下:

addNodeAddress

host:port 格式添加 Redis 集群节点地址。可以一次添加多个节点。
所有的节点(主节点和从节点)必须在配置时提供。

scanInterval

默认值: 1000

以毫秒为单位的 Elasticache 节点扫描间隔。

loadBalancer

默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer

其它实现: org.redisson.connection.balancer.WeightedRoundRobinBalancer,
org.redisson.connection.balancer.RandomLoadBalancer

多个 Redis 从服务器间的连接负载均衡器

slaveSubscriptionConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲订阅 (pub/sub) 连接量。

slaveSubscriptionConnectionPoolSize

默认值: 25

每个 从节点的 Redis ‘从’节点最大订阅 (pub/sub) 连接池大小。

slaveConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲连接量。

slaveConnectionPoolSize

默认值: 100

每个 从节点的 Redis ‘从’节点最大连接池大小。

masterConnectionMinimumIdleSize

默认值: 5

每个 从节点的 Redis ‘主’节点最小空闲连接量。

masterConnectionPoolSize

默认值: 100

Redis ‘主’节点最大连接池大小。

idleConnectionTimeout

默认值: 10000

若池化连接在某段 timeout 时间内没有被使用且当前连接量超过最小空闲连接池时,
它将会被关闭并从池中移除。其值的单位是毫秒。

connectTimeout

默认值: 1000

连接到任何 Redis 服务器的超时时间。

timeout

默认值: 1000

Redis 服务器响应的超时时间。从 Redis 命令被成功发送时开始计算。其值的单位是毫秒。

retryAttempts

默认值: 3

若 Redis 命令在超过 retryAttempts 次不能发送被 Redis 服务器,则将抛出一个错误。
但若成功发送,则将开始 timeout

retryInterval

默认值: 1000

发送 Redis 命令重试的时间间隔。其值的单位是毫秒。

reconnectionTimeout

默认值: 3000

Redis 服务器重连尝试的超时时间。在每次这种超时事件发生时, Redisson 会尝试连接到失联的 Redis 服务器。
其值的单位是毫秒。

failedAttempts

默认值: 3

当任何 Redis 命令的连续的未成功执行尝试到达 failedAttempts 时,
这个 Redis 服务器将被从一个内部的可用从节点列表中移除。

database

默认值: 0

针对 Redis 连接的数据库索引。

password

默认值: null

Redis 服务器授权的密码。

subscriptionsPerConnection

默认值: 5

每个 Redis 连接上的订阅的限制

clientName

默认值: null

客户端连接的名称。

Elasticache JSON 和 YAML 配置格式

以下是 JSON 格式的 Elasticache 配置示例。
所有的属性名称都匹配 ElasticacheServersConfigConfig 对象的属性名称。

  1. {
  2. "elasticacheServersConfig":{
  3. "idleConnectionTimeout":10000,
  4. "pingTimeout":1000,
  5. "connectTimeout":1000,
  6. "timeout":1000,
  7. "retryAttempts":3,
  8. "retryInterval":1000,
  9. "reconnectionTimeout":3000,
  10. "failedAttempts":3,
  11. "password":null,
  12. "subscriptionsPerConnection":5,
  13. "clientName":null,
  14. "loadBalancer":{
  15. "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
  16. },
  17. "slaveSubscriptionConnectionMinimumIdleSize":1,
  18. "slaveSubscriptionConnectionPoolSize":25,
  19. "slaveConnectionMinimumIdleSize":5,
  20. "slaveConnectionPoolSize":100,
  21. "masterConnectionMinimumIdleSize":5,
  22. "masterConnectionPoolSize":100,
  23. "readMode":"SLAVE",
  24. "nodeAddresses":[
  25. "//127.0.0.1:2812",
  26. "//127.0.0.1:2815",
  27. "//127.0.0.1:2813"
  28. ],
  29. "scanInterval":1000,
  30. "database":0
  31. },
  32. "threads":0,
  33. "codec":null,
  34. "useLinuxNativeEpoll":false,
  35. "eventLoopGroup":null
  36. }

以下是 YAML 格式的 Elasticache 配置示例。
所有的属性名称都匹配 ElasticacheServersConfigConfig 对象的属性名称。

  1. ---
  2. elasticacheServersConfig:
  3. idleConnectionTimeout:10000
  4. pingTimeout:1000
  5. connectTimeout:1000
  6. timeout:1000
  7. retryAttempts:3
  8. retryInterval:1000
  9. reconnectionTimeout:3000
  10. failedAttempts:3
  11. password:null
  12. subscriptionsPerConnection:5
  13. clientName:null
  14. loadBalancer:!<org.redisson.connection.balancer.RoundRobinLoadBalancer>{}
  15. slaveSubscriptionConnectionMinimumIdleSize:1
  16. slaveSubscriptionConnectionPoolSize:25
  17. slaveConnectionMinimumIdleSize:5
  18. slaveConnectionPoolSize:100
  19. masterConnectionMinimumIdleSize:5
  20. masterConnectionPoolSize:100
  21. readMode:"SLAVE"
  22. nodeAddresses:
  23. -"//127.0.0.1:2812"
  24. -"//127.0.0.1:2815"
  25. -"//127.0.0.1:2813"
  26. scanInterval:1000
  27. database:0
  28. threads:0
  29. codec:!<org.redisson.codec.JsonJacksonCodec>{}
  30. useLinuxNativeEpoll:false
  31. eventLoopGroup:null

单实例模式

编程式配置示例:

  1. // connects to 127.0.0.1:6379 by default
  2. RedissonClient redisson =Redisson.create();
  3. Config config =newConfig();
  4. config.useSingleServer().setAddress("myredisserver:6379");
  5. RedissonClient redisson =Redisson.create(config);

单实例设置

有关 Redis 单服务器配置的文档在
这里
单服务器连接模式可通过以下代码激活:

  1. SingleServerConfig clusterConfig = config.useSingleServer();

SingleServerConfig 设置项如下:

address

host:port 格式的 Redis 服务器地址。

subscriptionConnectionMinimumIdleSize

默认值: 1

最小空闲Redis订阅(pub/sub)连接量

subscriptionConnectionPoolSize

默认值: 25

最大Redis订阅 (pub/sub) 连接池大小。

connectionMinimumIdleSize

默认值: 5

最小Redis空闲连接量。

connectionPoolSize

默认值: 100

最大Redis连接池大小。

dnsMonitoring

默认值: false

若为 true,服务器地址将监控 DNS 中的变更

dnsMonitoringInterval

默认值: 5000

DNS 变更监控间隔

idleConnectionTimeout

默认值: 10000

若池化连接在某段 timeout 时间内没有被使用且当前连接量超过最小空闲连接池时,
它将会被关闭并从池中移除。其值的单位是毫秒。

connectTimeout

默认值: 1000

连接到任何 Redis 服务器的超时时间。

timeout

默认值: 1000

Redis 服务器响应的超时时间。从 Redis 命令被成功发送时开始计算。其值的单位是毫秒。

retryAttempts

默认值: 3

若 Redis 命令在超过 retryAttempts 次不能发送被 Redis 服务器,则将抛出一个错误。
但若成功发送,则将开始 timeout

retryInterval

默认值: 1000

发送 Redis 命令重试的时间间隔。其值的单位是毫秒。

reconnectionTimeout

默认值: 3000

Redis 服务器重连尝试的超时时间。在每次这种超时事件发生时, Redisson 会尝试连接到失联的 Redis 服务器。
其值的单位是毫秒。

failedAttempts

默认值: 3

当任何 Redis 命令的连续的未成功执行尝试到达 failedAttempts 时,
这个 Redis 服务器将被从一个内部的可用从节点列表中移除。

database

默认值: 0

针对 Redis 连接的数据库索引。

password

默认值: null

Redis 服务器授权的密码。

subscriptionsPerConnection

默认值: 5

每个 Redis 连接上的订阅的限制

clientName

默认值: null

客户端连接的名称。

单实例 JSON 和 YAML 配置格式

以下是 JSON 格式的单实例配置示例。
所有属性名称都匹配 SingleServerConfigConfig 对象的属性名称。

  1. {
  2. "singleServerConfig":{
  3. "idleConnectionTimeout":10000,
  4. "pingTimeout":1000,
  5. "connectTimeout":1000,
  6. "timeout":1000,
  7. "retryAttempts":3,
  8. "retryInterval":1000,
  9. "reconnectionTimeout":3000,
  10. "failedAttempts":3,
  11. "password":null,
  12. "subscriptionsPerConnection":5,
  13. "clientName":null,
  14. "address":[
  15. "//127.0.0.1:6379"
  16. ],
  17. "subscriptionConnectionMinimumIdleSize":1,
  18. "subscriptionConnectionPoolSize":25,
  19. "connectionMinimumIdleSize":5,
  20. "connectionPoolSize":100,
  21. "database":0,
  22. "dnsMonitoring":false,
  23. "dnsMonitoringInterval":5000
  24. },
  25. "threads":0,
  26. "codec":null,
  27. "useLinuxNativeEpoll":false,
  28. "eventLoopGroup":null
  29. }

以下是 YAML 格式的单实例配置示例。
所有属性名称都匹配 SingleServerConfigConfig 对象的属性名称。

  1. ---
  2. singleServerConfig:
  3. idleConnectionTimeout:10000
  4. pingTimeout:1000
  5. connectTimeout:1000
  6. timeout:1000
  7. retryAttempts:3
  8. retryInterval:1000
  9. reconnectionTimeout:3000
  10. failedAttempts:3
  11. password:null
  12. subscriptionsPerConnection:5
  13. clientName:null
  14. address:
  15. -"//127.0.0.1:6379"
  16. subscriptionConnectionMinimumIdleSize:1
  17. subscriptionConnectionPoolSize:25
  18. connectionMinimumIdleSize:5
  19. connectionPoolSize:100
  20. database:0
  21. dnsMonitoring:false
  22. dnsMonitoringInterval:5000
  23. threads:0
  24. codec:!<org.redisson.codec.JsonJacksonCodec>{}
  25. useLinuxNativeEpoll:false
  26. eventLoopGroup:null

Sentinel 模式

编程式配置示例:

  1. Config config =newConfig();
  2. config.useSentinelServers()
  3. .setMasterName("mymaster")
  4. .addSentinelAddress("127.0.0.1:26389","127.0.0.1:26379")
  5. .addSentinelAddress("127.0.0.1:26319");
  6. RedissonClient redisson =Redisson.create(config);

Sentinel 设置

有关 Redis 服务器 sentinel 配置的文档在
这里
集群连接模式可由以下代码激活:

  1. SentinelServersConfig clusterConfig = config.useSentinelServers();

SentinelServersConfig 设置项如下:

masterName

由 Redis Sentinel 服务器和主节点变更监控任务所使用的主服务器名称。

addSentinelAddress

添加 host:port 格式的 Redis Sentinel 节点地址。可一次性添加多个节点。

loadBalancer

默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer

其它实现有: org.redisson.connection.balancer.WeightedRoundRobinBalancer,
redisson.connection.balancer.RandomLoadBalancer

多个 Redis 从服务器间的连接负载均衡器。

slaveSubscriptionConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲订阅 (pub/sub) 连接量。

slaveSubscriptionConnectionPoolSize

默认值: 25

每个 从节点的 Redis ‘从’节点最大订阅 (pub/sub) 连接池大小。

slaveConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲连接量。

slaveConnectionPoolSize

默认值: 100

每个 从节点的 Redis ‘从’节点最大连接池大小。

masterConnectionMinimumIdleSize

默认值: 5

每个 从节点的 Redis ‘主’节点最小空闲连接量。

masterConnectionPoolSize

默认值: 100

Redis ‘主’节点最大连接池大小。

idleConnectionTimeout

默认值: 10000

若池化连接在某段 timeout 时间内没有被使用且当前连接量超过最小空闲连接池时,
它将会被关闭并从池中移除。其值的单位是毫秒。

connectTimeout

默认值: 1000

连接到任何 Redis 服务器的超时时间。

timeout

默认值: 1000

Redis 服务器响应的超时时间。从 Redis 命令被成功发送时开始计算。其值的单位是毫秒。

retryAttempts

默认值: 3

若 Redis 命令在超过 retryAttempts 次不能发送被 Redis 服务器,则将抛出一个错误。
但若成功发送,则将开始 timeout

retryInterval

默认值: 1000

发送 Redis 命令重试的时间间隔。其值的单位是毫秒。

reconnectionTimeout

默认值: 3000

Redis 服务器重连尝试的超时时间。在每次这种超时事件发生时, Redisson 会尝试连接到失联的 Redis 服务器。
其值的单位是毫秒。

failedAttempts

默认值: 3

当任何 Redis 命令的连续的未成功执行尝试到达 failedAttempts 时,
这个 Redis 服务器将被从一个内部的可用从节点列表中移除。

database

默认值: 0

针对 Redis 连接的数据库索引。

password

默认值: null

Redis 服务器授权的密码。

subscriptionsPerConnection

默认值: 5

每个 Redis 连接上的订阅的限制

clientName

默认值: null

客户端连接的名称。

Sentinel JSON 和 YAML 配置格式

以下是 JSON 格式的 Sentinel 配置示例。
所有属性名称都匹配 SentinelServerConfigConfig 对象的属性名称。

  1. {
  2. "sentinelServersConfig":{
  3. "idleConnectionTimeout":10000,
  4. "pingTimeout":1000,
  5. "connectTimeout":1000,
  6. "timeout":1000,
  7. "retryAttempts":3,
  8. "retryInterval":1000,
  9. "reconnectionTimeout":3000,
  10. "failedAttempts":3,
  11. "password":null,
  12. "subscriptionsPerConnection":5,
  13. "clientName":null,
  14. "loadBalancer":{
  15. "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
  16. },
  17. "slaveSubscriptionConnectionMinimumIdleSize":1,
  18. "slaveSubscriptionConnectionPoolSize":25,
  19. "slaveConnectionMinimumIdleSize":5,
  20. "slaveConnectionPoolSize":100,
  21. "masterConnectionMinimumIdleSize":5,
  22. "masterConnectionPoolSize":100,
  23. "readMode":"SLAVE",
  24. "sentinelAddresses":[
  25. "//127.0.0.1:26379",
  26. "//127.0.0.1:26389"
  27. ],
  28. "masterName":"mymaster",
  29. "database":0
  30. },
  31. "threads":0,
  32. "codec":null,
  33. "useLinuxNativeEpoll":false,
  34. "eventLoopGroup":null
  35. }

以下是 YAML 格式的 Sentinel 配置示例。
所有属性名称都匹配 SentinelServerConfigConfig 对象的属性名称。

  1. ---
  2. sentinelServersConfig:
  3. idleConnectionTimeout:10000
  4. pingTimeout:1000
  5. connectTimeout:1000
  6. timeout:1000
  7. retryAttempts:3
  8. retryInterval:1000
  9. reconnectionTimeout:3000
  10. failedAttempts:3
  11. password:null
  12. subscriptionsPerConnection:5
  13. clientName:null
  14. loadBalancer:!<org.redisson.connection.balancer.RoundRobinLoadBalancer>{}
  15. slaveSubscriptionConnectionMinimumIdleSize:1
  16. slaveSubscriptionConnectionPoolSize:25
  17. slaveConnectionMinimumIdleSize:5
  18. slaveConnectionPoolSize:100
  19. masterConnectionMinimumIdleSize:5
  20. masterConnectionPoolSize:100
  21. readMode:"SLAVE"
  22. sentinelAddresses:
  23. -"//127.0.0.1:26379"
  24. -"//127.0.0.1:26389"
  25. masterName:"mymaster"
  26. database:0
  27. threads:0
  28. codec:!<org.redisson.codec.JsonJacksonCodec>{}
  29. useLinuxNativeEpoll:false
  30. eventLoopGroup:null

主从模式

编程式配置示例:

  1. Config config =newConfig();
  2. config.useMasterSlaveServers()
  3. .setMasterAddress("127.0.0.1:6379")
  4. .addSlaveAddress("127.0.0.1:6389","127.0.0.1:6332","127.0.0.1:6419")
  5. .addSlaveAddress("127.0.0.1:6399");
  6. RedissonClient redisson =Redisson.create(config);

主从设置

有关 Redis 服务器主/从配置的文档在
这里
主从连接模式可由以下代码激活:

  1. MasterSlaveServersConfig clusterConfig = config.useMasterSlaveServers();

MasterSlaveServersConfig 设置项如下:

masterAddress

host:port 格式的 Redis 主节点地址

addSlaveAddress

添加 host:port 格式的 Redis 从节点地址。可一次添加多个节点。

loadBalancer

默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer

其它实现有: org.redisson.connection.balancer.WeightedRoundRobinBalancer,
redisson.connection.balancer.RandomLoadBalancer

多个 Redis 从服务器间的连接负载均衡器。

slaveSubscriptionConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲订阅 (pub/sub) 连接量。

slaveSubscriptionConnectionPoolSize

默认值: 25

每个 从节点的 Redis ‘从’节点最大订阅 (pub/sub) 连接池大小。

slaveConnectionMinimumIdleSize

默认值: 1

每个 从节点的 Redis ‘从’节点最小空闲连接量。

slaveConnectionPoolSize

默认值: 100

每个 从节点的 Redis ‘从’节点最大连接池大小。

masterConnectionMinimumIdleSize

默认值: 5

每个 从节点的 Redis ‘主’节点最小空闲连接量。

masterConnectionPoolSize

默认值: 100

Redis ‘主’节点最大连接池大小。

idleConnectionTimeout

默认值: 10000

若池化连接在某段 timeout 时间内没有被使用且当前连接量超过最小空闲连接池时,
它将会被关闭并从池中移除。其值的单位是毫秒。

connectTimeout

默认值: 1000

连接到任何 Redis 服务器的超时时间。

timeout

默认值: 1000

Redis 服务器响应的超时时间。从 Redis 命令被成功发送时开始计算。其值的单位是毫秒。

retryAttempts

默认值: 3

若 Redis 命令在超过 retryAttempts 次不能发送被 Redis 服务器,则将抛出一个错误。
但若成功发送,则将开始 timeout

retryInterval

默认值: 1000

发送 Redis 命令重试的时间间隔。其值的单位是毫秒。

reconnectionTimeout

默认值: 3000

Redis 服务器重连尝试的超时时间。在每次这种超时事件发生时, Redisson 会尝试连接到失联的 Redis 服务器。
其值的单位是毫秒。

failedAttempts

默认值: 3

当任何 Redis 命令的连续的未成功执行尝试到达 failedAttempts 时,
这个 Redis 服务器将被从一个内部的可用从节点列表中移除。

database

默认值: 0

针对 Redis 连接的数据库索引。

password

默认值: null

Redis 服务器授权的密码。

subscriptionsPerConnection

默认值: 5

每个 Redis 连接上的订阅的限制

clientName

默认值: null

客户端连接的名称。

主从 JSON 和 YAML 配置格式

以下是 JSON 格式的主从配置示例。
所有属性名称都匹配 MasterSlaveServersConfigConfig 对象的属性名称。

  1. {
  2. "masterSlaveServersConfig":{
  3. "idleConnectionTimeout":10000,
  4. "pingTimeout":1000,
  5. "connectTimeout":1000,
  6. "timeout":1000,
  7. "retryAttempts":3,
  8. "retryInterval":1000,
  9. "reconnectionTimeout":3000,
  10. "failedAttempts":3,
  11. "password":null,
  12. "subscriptionsPerConnection":5,
  13. "clientName":null,
  14. "loadBalancer":{
  15. "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
  16. },
  17. "slaveSubscriptionConnectionMinimumIdleSize":1,
  18. "slaveSubscriptionConnectionPoolSize":25,
  19. "slaveConnectionMinimumIdleSize":5,
  20. "slaveConnectionPoolSize":100,
  21. "masterConnectionMinimumIdleSize":5,
  22. "masterConnectionPoolSize":100,
  23. "readMode":"SLAVE",
  24. "slaveAddresses":[
  25. "//127.0.0.1:6381",
  26. "//127.0.0.1:6380"
  27. ],
  28. "masterAddress":[
  29. "//127.0.0.1:6379"
  30. ],
  31. "database":0
  32. },
  33. "threads":0,
  34. "codec":null,
  35. "useLinuxNativeEpoll":false,
  36. "eventLoopGroup":null
  37. }

以下是 YAML 格式的主从配置示例。
所有属性名称都匹配 MasterSlaveServersConfigConfig 对象的属性名称。

  1. ---
  2. masterSlaveServersConfig:
  3. idleConnectionTimeout:10000
  4. pingTimeout:1000
  5. connectTimeout:1000
  6. timeout:1000
  7. retryAttempts:3
  8. retryInterval:1000
  9. reconnectionTimeout:3000
  10. failedAttempts:3
  11. password:null
  12. subscriptionsPerConnection:5
  13. clientName:null
  14. loadBalancer:!<org.redisson.connection.balancer.RoundRobinLoadBalancer>{}
  15. slaveSubscriptionConnectionMinimumIdleSize:1
  16. slaveSubscriptionConnectionPoolSize:25
  17. slaveConnectionMinimumIdleSize:5
  18. slaveConnectionPoolSize:100
  19. masterConnectionMinimumIdleSize:5
  20. masterConnectionPoolSize:100
  21. readMode:"SLAVE"
  22. slaveAddresses:
  23. -"//127.0.0.1:6381"
  24. -"//127.0.0.1:6380"
  25. masterAddress:
  26. -"//127.0.0.1:6379"
  27. database:0
  28. threads:0
  29. codec:!<org.redisson.codec.JsonJacksonCodec>{}
  30. useLinuxNativeEpoll:false
  31. eventLoopGroup:null