配置

2.1. 程序配置

程序配置是通过使用 Config 的对象实例来实现的,比如:

Config config = new Config();
config.setUseLinuxNativeEpoll(true);
config.useClusterServers()
      .addNodeAddress("127.0.0.1:7181");

2.2. 声明式配置

Redisson配置可以从JSON或者YAML格式的文件进行载入。 为了能够从JSON文件中载入配置信息可以使用如下代码:

Config config = Config.fromJSON(new File("config-file.json"));  
RedissonClient redisson = Redisson.create(config);

为了将配置信息写入到JSON文件中可以使用Config.toJSON 方法:

Config config = new Config();
// ... many settings are set here
String jsonFormat = config.toJSON();

为了能够从YAML文件中读取配置信息使用config.fromYAML 方法,如下代码:

Config config = Config.fromJSON(new File("config-file.yaml"));  
RedissonClient redisson = Redisson.create(config);

为了能够将配置信息写入到YAML中可以使用config.toYAML 方法:

Config config = new Config();
// ... many settings are set here
String jsonFormat = config.toYAML();

2.3. 通用设置

如下的设置属于org.redisson.Config` 对象,对所有的模式生效:

codec 编码器

缺省值: org.redisson.codec.JsonJacksonCodec

Redis 数据编解码器(data codec)。被用于读取和写入Redis数据。一些实现是可用的:

编解码器类型 描述
org.redisson.codec.JsonJacksonCodec Jackson JSON codec
org.redisson.codec.CborJacksonCodec CBOR binary json codec
org.redisson.codec.MsgPackJacksonCodec MsgPack binary json codec
org.redisson.codec.KryoCodec Kryo binary codec
org.redisson.codec.SerializationCodec JDK Serialization codec
org.redisson.codec.FstCodec FST up to 10 times faster and 100% JDK Serialization compatible codec
org.redisson.codec.LZ4Codec LZ4 compression codec
org.redisson.codec.SnappyCodec Snappy compression codec
org.redisson.client.codec.StringCodec simple String codec
org.redisson.client.codec.LongCodec simple Long codec
threads 线程数目

缺省值: 当前处理器个数 * 2

线程数目在所有的redis节点客户端中共享。

eventLoopGroup 事件循环组

可以使用外部的事件循环组。 事件循环组可以处理所有被所拥有的线程中所有绑定到的redis服务netty连接中。每个redisson客户端默认都会建立自己的事件循环组。因此如果有多个redisson实例在同一个JVM中,这个属性有利于在这些实例中共享同一个事件循环组。

只有io.netty.channel.epoll.EpollEventLoopGroup 或者 io.netty.channel.nio.NioEventLoopGroup 允许使用。

useLinuxNativeEpoll 使用linux本地的epoll

缺省值: false

如果服务器绑定在一个回路网卡中可以激活为一个unix套接字。同样也可以作为epoll 传输模型进行激活。
netty-transport-native-epoll 库应该被放在class path下。

2.4. 集群模式

程序化配置示例:

Config config = new Config();
config.useClusterServers()
    .setScanInterval(2000) // cluster state scan interval in milliseconds
    .addNodeAddress("127.0.0.1:7000", "127.0.0.1:7001")
    .addNodeAddress("127.0.0.1:7002");

RedissonClient redisson = Redisson.create(config);

2.4.1. 集群设置

redis 服务集群的配置文档在这里. 最小化的集群配置需要包含至少三个主节点。集群的连接模式通过如下代码激活:
ClusterServersConfig clusterConfig = config.useClusterServers();

ClusterServersConfig settings listed below:

addNodeAddress 新增节点地址

添加redis 集群节点可以通过主机地址:端口号 格式。多个节点可以一次性都被加入。

scanInterval 扫描周期

缺省值: 1000

Redis计算扫描周期,单位 毫秒。

readFromSlaves 从子节点读取

缺省值: true

如果是否使用集群模式,使用子节点读取操作,尽可能使用true

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命令没有成功发送redis服务器会抛出异常,可以指定尝试的次数retryAttempts。一旦成功发送之后,超时timeout计算将开始统计.

retryInterval 重新尝试的周期

缺省值: 1000

尝试发送redis 命令道服务器执行的时间周期,以毫秒为单位。

reconnectionTimeout 重新连接超时

缺省值: 3000

Redis服务器重新连接尝试超时时间。在每次超时事件中,redisson都会尝试重新连接已经断开连接的redis服务,以毫秒为单位。.

failedAttempts 失败尝试次数

缺省值: 3

Redis服务会排除一些内置的子节点,当在一些redis命令未能依次成功执行的失败尝试次数failedAttempts.

database 数据库

缺省值: 0

Redis连接所使用的数据库下标

password 密码

缺省值: null

Redis 服务的校验密码.

subscriptionsPerConnection 每个连接的订阅数

缺省值: 5

每个连接的订阅上限

clientName 客户端名称

缺省值: null

客户端连接命名

2.4.2. 集群部署中的JSON和YAML中的配置

以下是一个JSON文件格式的集群配置。所有的属性都按照名称映射到 ClusterServersConfigConfig 对象属性上。

{
   "clusterServersConfig":{
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":1000,
      "timeout":1000,
      "retryAttempts":3,
      "retryInterval":1000,
      "reconnectionTimeout":3000,
      "failedAttempts":3,
      "password":null,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "loadBalancer":{
         "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
      },
      "slaveSubscriptionConnectionMinimumIdleSize":1,
      "slaveSubscriptionConnectionPoolSize":25,
      "slaveConnectionMinimumIdleSize":5,
      "slaveConnectionPoolSize":100,
      "masterConnectionMinimumIdleSize":5,
      "masterConnectionPoolSize":100,
      "readMode":"SLAVE",
      "nodeAddresses":[
         "//127.0.0.1:7004",
         "//127.0.0.1:7001",
         "//127.0.0.1:7000"
      ],
      "scanInterval":1000
   },
   "threads":0,
   "codec":null,
   "useLinuxNativeEpoll":false,
   "eventLoopGroup":null
}

以下为YAML格式的集群配置。所有的属性都按照名称映射到 ClusterServersConfigConfig 对象属性上.

clusterServersConfig:
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  connectTimeout: 1000
  timeout: 1000
  retryAttempts: 3
  retryInterval: 1000
  reconnectionTimeout: 3000
  failedAttempts: 3
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
  slaveSubscriptionConnectionMinimumIdleSize: 1
  slaveSubscriptionConnectionPoolSize: 25
  slaveConnectionMinimumIdleSize: 5
  slaveConnectionPoolSize: 100
  masterConnectionMinimumIdleSize: 5
  masterConnectionPoolSize: 100
  readMode: "SLAVE"
  nodeAddresses:
  - "//127.0.0.1:7004"
  - "//127.0.0.1:7001"
  - "//127.0.0.1:7000"
  scanInterval: 1000
threads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
useLinuxNativeEpoll: false
eventLoopGroup: null

2.5. 弹性缓存模式

程序化配置示例:

Config config = new Config();
config.useElasticacheServers()
    .setScanInterval(2000) // master node change scan interval
    .addNodeAddress("127.0.0.1:7000", "127.0.0.1:7001")
    .addNodeAddress("127.0.0.1:7002");

RedissonClient redisson = Redisson.create(config);

2.5.1. 弹性化缓存配置

关于AWS的弹性缓存redis服务器配置见这里.

弹性化缓存连接模式通过如下代码激活:
ElasticacheServersConfig clusterConfig = config.useElasticacheServers();

ElasticacheServersConfig 的配置如下所示:

addNodeAddress 新增节点地址

新增Redis集群节点地址以host:port 格式。多个节点可以一次性被加入。所有的节点 (主和子节点) 必须在配置阶段被加入.

scanInterval 扫描周期

缺省值: 1000

弹性缓存节点的扫描周期以毫秒为单位。

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 'master' node minimum idle connection amount for each slave node

masterConnectionPoolSize

缺省值: 100

Redis 主节点最小的空闲连接数目

idleConnectionTimeout 空闲连接超时时间

缺省值: 10000

如果在池子中的连接在timeout 时间内未被使用,并且当前的连接数目大于最小的空闲连接池最木,则会将其关闭,并且从池中移除,单位为 毫秒。

connectTimeout 连接超时

缺省值: 1000

在连接到任何redis服务器上的超时时间。

timeout 超时时间

缺省值: 1000

Redis 服务器的响应超时。从redis命令成功发出去开始计时。以毫秒为单位。

retryAttempts 重新尝试次数

缺省值: 3

如果redis命令没有成功发送redis服务器会抛出异常,可以指定尝试的次数retryAttempts。一旦成功发送之后,超时timeout计算将开始统计.

retryInterval 重新尝试的周期

缺省值: 1000

尝试发送redis 命令道服务器执行的时间周期,以毫秒为单位。

reconnectionTimeout 重新连接超时

缺省值: 3000

Redis服务器重新连接尝试超时时间。在每次超时事件中,redisson都会尝试重新连接已经断开连接的redis服务,以毫秒为单位。

failedAttempts 失败尝试次数

缺省值: 3

Redis服务会排除一些内置的子节点,当在一些redis命令未能依次成功执行的失败尝试次数failedAttempts.

database 数据库

缺省值: 0

Redis连接所使用的数据库下标

password 密码

缺省值: null

Redis 服务的校验密码.

subscriptionsPerConnection 每个连接的订阅数

缺省值: 5

每个连接的订阅上限

clientName 客户端名称

缺省值: null

客户端连接命名

2.5.2. 弹性缓存的JSON和YAML格式配置

如下是弹性缓存的JSON格式配置示例。所有的属性都按照名称映射为 ElasticacheServersConfigConfig 对象上。

{
   "elasticacheServersConfig":{
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":1000,
      "timeout":1000,
      "retryAttempts":3,
      "retryInterval":1000,
      "reconnectionTimeout":3000,
      "failedAttempts":3,
      "password":null,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "loadBalancer":{
         "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
      },
      "slaveSubscriptionConnectionMinimumIdleSize":1,
      "slaveSubscriptionConnectionPoolSize":25,
      "slaveConnectionMinimumIdleSize":5,
      "slaveConnectionPoolSize":100,
      "masterConnectionMinimumIdleSize":5,
      "masterConnectionPoolSize":100,
      "readMode":"SLAVE",
      "nodeAddresses":[
         "//127.0.0.1:2812",
         "//127.0.0.1:2815",
         "//127.0.0.1:2813"
      ],
      "scanInterval":1000,
      "database":0
   },
   "threads":0,
   "codec":null,
   "useLinuxNativeEpoll":false,
   "eventLoopGroup":null
}

以下为弹性缓存的YAML格式配置。所有的属性都按照名称映射到 ElasticacheServersConfig and Config对象属性上。

---
elasticacheServersConfig:
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  connectTimeout: 1000
  timeout: 1000
  retryAttempts: 3
  retryInterval: 1000
  reconnectionTimeout: 3000
  failedAttempts: 3
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
  slaveSubscriptionConnectionMinimumIdleSize: 1
  slaveSubscriptionConnectionPoolSize: 25
  slaveConnectionMinimumIdleSize: 5
  slaveConnectionPoolSize: 100
  masterConnectionMinimumIdleSize: 5
  masterConnectionPoolSize: 100
  readMode: "SLAVE"
  nodeAddresses:
  - "//127.0.0.1:2812"
  - "//127.0.0.1:2815"
  - "//127.0.0.1:2813"
  scanInterval: 1000
  database: 0
threads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
useLinuxNativeEpoll: false
eventLoopGroup: null

2.6. 单个节点模式

程序配置示例:

// connects to 127.0.0.1:6379 by default
RedissonClient redisson = Redisson.create();

Config config = new Config();
config.useSingleServer().setAddress("myredisserver:6379");
RedissonClient redisson = Redisson.create(config);

2.6.1. 单个节点的设置

关于单个节点的配置文档见这里。 单个节点服务模式通过如下代码激活:
SingleServerConfig clusterConfig = config.useSingleServer();

SingleServerConfig 配置项目如下所示:

address 地址

Redis服务地址以host:port 格式。

subscriptionConnectionMinimumIdleSize 订阅的最小连接数

缺省值: 1

Redis 最小的空闲订阅连接数

subscriptionConnectionPoolSize 订阅连接池大小

缺省值: 25

Redis 最大订阅连接池数目。

connectionMinimumIdleSize 最小连接空闲数目

缺省值: 5

Redis 最小空闲数目。

connectionPoolSize 连接池大小

缺省值: 100

Redis连接池的最大值。

dnsMonitoring 是否dns监控

缺省值: false

如果为true,服务器的地址就会被监控通过DNS服务器。

dnsMonitoringInterval DNS监控周期

缺省值: 5000

DNS修改的监控周期。

idleConnectionTimeout 空闲连接超时时间

缺省值: 10000

如果在池子中的连接在timeout 时间内未被使用,并且当前的连接数目大于最小的空闲连接池最木,则会将其关闭,并且从池中移除,单位为 毫秒

connectTimeout 连接超时

缺省值: 1000

在连接到任何redis服务器上的超时时间。

timeout 超时时间

缺省值: 1000

Redis 服务器的响应超时。从redis命令成功发出去开始计时。以毫秒为单位。

retryAttempts 重新尝试次数

缺省值: 3

如果redis命令没有成功发送redis服务器会抛出异常,可以指定尝试的次数retryAttempts。一旦成功发送之后,超时timeout计算将开始统计。

retryInterval 重新尝试的周期

缺省值: 1000

尝试发送redis 命令道服务器执行的时间周期,以毫秒为单位。

reconnectionTimeout 重新连接超时

缺省值: 3000

Redis服务器重新连接尝试超时时间。在每次超时事件中,redisson都会尝试重新连接已经断开连接的redis服务,以毫秒为单位。

failedAttempts 失败尝试次数

缺省值: 3

Redis服务会排除一些内置的子节点,当在一些redis命令未能依次成功执行的失败尝试次数failedAttempts

database 数据库

缺省值: 0

Redis连接所使用的数据库下标

password 密码

缺省值: null

Redis 服务的校验密码.

subscriptionsPerConnection 每个连接的订阅数

缺省值: 5

每个连接的订阅上限

clientName 客户端名称

缺省值: null

客户端连接的名称

2.6.2. 单个节点的JSON和YAML格式的配置

以下是单个节点以JSON格式的配置示例。所有的属性都按照名称映射到SingleServerConfigConfig 对象的属性上。

{
   "singleServerConfig":{
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":1000,
      "timeout":1000,
      "retryAttempts":3,
      "retryInterval":1000,
      "reconnectionTimeout":3000,
      "failedAttempts":3,
      "password":null,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "address":[
         "//127.0.0.1:6379"
      ],
      "subscriptionConnectionMinimumIdleSize":1,
      "subscriptionConnectionPoolSize":25,
      "connectionMinimumIdleSize":5,
      "connectionPoolSize":100,
      "database":0,
      "dnsMonitoring":false,
      "dnsMonitoringInterval":5000
   },
   "threads":0,
   "codec":null,
   "useLinuxNativeEpoll":false,
   "eventLoopGroup":null
}

以下是单个节点以YAML格式文件的配置示例。 所有的属性都按照名称映射到SingleServerConfigConfig 对象的属性上。

---
singleServerConfig:
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  connectTimeout: 1000
  timeout: 1000
  retryAttempts: 3
  retryInterval: 1000
  reconnectionTimeout: 3000
  failedAttempts: 3
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  address:
  - "//127.0.0.1:6379"
  subscriptionConnectionMinimumIdleSize: 1
  subscriptionConnectionPoolSize: 25
  connectionMinimumIdleSize: 5
  connectionPoolSize: 100
  database: 0
  dnsMonitoring: false
  dnsMonitoringInterval: 5000
threads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
useLinuxNativeEpoll: false
eventLoopGroup: null

2.7. 哨兵模式

程序化配置示例:

Config config = new Config();
config.useSentinelServers()
    .setMasterName("mymaster")
    .addSentinelAddress("127.0.0.1:26389", "127.0.0.1:26379")
    .addSentinelAddress("127.0.0.1:26319");

RedissonClient redisson = Redisson.create(config);

2.7.1. 哨兵模式配置

文档关于哨兵模式的配置见这里。哨兵模式激活的代码如下:
SentinelServersConfig clusterConfig = config.useSentinelServers();

SentinelServersConfig 配置列表如下:

masterName 主节点名称

主节点名称用来作为哨兵服务器和主节点修改的监控任务。

addSentinelAddress 增加哨兵地址

增加哨兵节点地址通过以host:port 格式。多个节点可以一次性被添加。

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命令没有成功发送redis服务器会抛出异常,可以指定尝试的次数retryAttempts。一旦成功发送之后,超时timeout计算将开始统计.

retryInterval 重新尝试的周期

缺省值: 1000

尝试发送redis 命令道服务器执行的时间周期,以毫秒为单位。

reconnectionTimeout 重新连接超时

缺省值: 3000

Redis服务器重新连接尝试超时时间。在每次超时事件中,redisson都会尝试重新连接已经断开连接的redis服务,以毫秒为单位。

failedAttempts 失败尝试次数

缺省值: 3

Redis服务会排除一些内置的子节点,当在一些redis命令未能依次成功执行的失败尝试次数failedAttempts.

database 数据库

缺省值: 0

Redis连接所使用的数据库下标

password 密码

缺省值: null

Redis 服务的校验密码.

subscriptionsPerConnection 每个连接的订阅数

缺省值: 5

每个连接的订阅上限

clientName 客户端名称

缺省值: null

客户端连接的名称

2.7.2. 哨兵模式下的JSON和YAML格式文件配置

以下是哨兵模式以JSON格式配置的示例。所有的属性都按照名称映射到SentinelServersConfigConfig 对象的属性上。

{
   "sentinelServersConfig":{
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":1000,
      "timeout":1000,
      "retryAttempts":3,
      "retryInterval":1000,
      "reconnectionTimeout":3000,
      "failedAttempts":3,
      "password":null,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "loadBalancer":{
         "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
      },
      "slaveSubscriptionConnectionMinimumIdleSize":1,
      "slaveSubscriptionConnectionPoolSize":25,
      "slaveConnectionMinimumIdleSize":5,
      "slaveConnectionPoolSize":100,
      "masterConnectionMinimumIdleSize":5,
      "masterConnectionPoolSize":100,
      "readMode":"SLAVE",
      "sentinelAddresses":[
         "//127.0.0.1:26379",
         "//127.0.0.1:26389"
      ],
      "masterName":"mymaster",
      "database":0
   },
   "threads":0,
   "codec":null,
   "useLinuxNativeEpoll":false,
   "eventLoopGroup":null
}

以下是哨兵模式以YAML格式配置的示例。 所有的属性都按照名称映射到SentinelServersConfigConfig 对象的属性上。

---
sentinelServersConfig:
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  connectTimeout: 1000
  timeout: 1000
  retryAttempts: 3
  retryInterval: 1000
  reconnectionTimeout: 3000
  failedAttempts: 3
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
  slaveSubscriptionConnectionMinimumIdleSize: 1
  slaveSubscriptionConnectionPoolSize: 25
  slaveConnectionMinimumIdleSize: 5
  slaveConnectionPoolSize: 100
  masterConnectionMinimumIdleSize: 5
  masterConnectionPoolSize: 100
  readMode: "SLAVE"
  sentinelAddresses:
  - "//127.0.0.1:26379"
  - "//127.0.0.1:26389"
  masterName: "mymaster"
  database: 0
threads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
useLinuxNativeEpoll: false
eventLoopGroup: null

2.8. 主子节点模式

程序化配置的示例:

Config config = new Config();
config.useMasterSlaveServers()
    .setMasterAddress("127.0.0.1:6379")
    .addSlaveAddress("127.0.0.1:6389", "127.0.0.1:6332", "127.0.0.1:6419")
    .addSlaveAddress("127.0.0.1:6399");

RedissonClient redisson = Redisson.create(config);

2.8.1. 主子节点模式配置

关于主子节点模式的文档见这里。主子节点模式通过如下的代码激活:
MasterSlaveServersConfig clusterConfig = config.useMasterSlaveServers();

MasterSlaveServersConfig 配置列表如下:

masterAddress 主节点地址

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

addSlaveAddress 增加子节点地址

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

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命令没有成功发送redis服务器会抛出异常,可以指定尝试的次数retryAttempts。一旦成功发送之后,超时timeout计算将开始统计。

retryInterval 重新尝试的周期

缺省值: 1000

尝试发送redis 命令道服务器执行的时间周期,以毫秒为单位。

reconnectionTimeout 重新连接超时

缺省值: 3000

Redis服务器重新连接尝试超时时间。在每次超时事件中,redisson都会尝试重新连接已经断开连接的redis服务,以毫秒为单位。

failedAttempts 失败尝试次数

缺省值: 3

Redis服务会排除一些内置的子节点,当在一些redis命令未能依次成功执行的失败尝试次数failedAttempts.

database 数据库

缺省值: 0

Redis连接所使用的数据库下标

password 密码

缺省值: null

Redis 服务的校验密码.

subscriptionsPerConnection 每个连接的最大订阅数

缺省值: 5

每个Redis连接的订阅最大数目

clientName 客户端名称

缺省值: null

客户端连接名称

2.8.2. 主子节点模式的 JSON和YAML格式文件配置

以下是主子节点模式以JSON格式的配置示例。所有的属性都按照名称映射到 MasterSlaveServersConfigConfig 对象属性上。

{
   "masterSlaveServersConfig":{
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":1000,
      "timeout":1000,
      "retryAttempts":3,
      "retryInterval":1000,
      "reconnectionTimeout":3000,
      "failedAttempts":3,
      "password":null,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "loadBalancer":{
         "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"
      },
      "slaveSubscriptionConnectionMinimumIdleSize":1,
      "slaveSubscriptionConnectionPoolSize":25,
      "slaveConnectionMinimumIdleSize":5,
      "slaveConnectionPoolSize":100,
      "masterConnectionMinimumIdleSize":5,
      "masterConnectionPoolSize":100,
      "readMode":"SLAVE",
      "slaveAddresses":[
         "//127.0.0.1:6381",
         "//127.0.0.1:6380"
      ],
      "masterAddress":[
         "//127.0.0.1:6379"
      ],
      "database":0
   },
   "threads":0,
   "codec":null,
   "useLinuxNativeEpoll":false,
   "eventLoopGroup":null
}

以下是主子节点模式以YAML格式的配置示例。所有的属性都按照名称映射到 MasterSlaveServersConfigConfig 对象属性上。


masterSlaveServersConfig:
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  connectTimeout: 1000
  timeout: 1000
  retryAttempts: 3
  retryInterval: 1000
  reconnectionTimeout: 3000
  failedAttempts: 3
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
  slaveSubscriptionConnectionMinimumIdleSize: 1
  slaveSubscriptionConnectionPoolSize: 25
  slaveConnectionMinimumIdleSize: 5
  slaveConnectionPoolSize: 100
  masterConnectionMinimumIdleSize: 5
  masterConnectionPoolSize: 100
  readMode: "SLAVE"
  slaveAddresses:
  - "//127.0.0.1:6381"
  - "//127.0.0.1:6380"
  masterAddress:
  - "//127.0.0.1:6379"
  database: 0
threads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
useLinuxNativeEpoll: false
eventLoopGroup: null

results matching ""

    No results matching ""