配置
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文件格式的集群配置。所有的属性都按照名称映射到 ClusterServersConfig
和 Config
对象属性上。
{
"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格式的集群配置。所有的属性都按照名称映射到 ClusterServersConfig
和 Config
对象属性上.
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格式配置示例。所有的属性都按照名称映射为 ElasticacheServersConfig
和 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":{
"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格式的配置示例。所有的属性都按照名称映射到SingleServerConfig
和 Config
对象的属性上。
{
"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格式文件的配置示例。 所有的属性都按照名称映射到SingleServerConfig
和 Config
对象的属性上。
---
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格式配置的示例。所有的属性都按照名称映射到SentinelServersConfig
和 Config
对象的属性上。
{
"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格式配置的示例。 所有的属性都按照名称映射到SentinelServersConfig
和 Config
对象的属性上。
---
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格式的配置示例。所有的属性都按照名称映射到 MasterSlaveServersConfig
和 Config
对象属性上。
{
"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格式的配置示例。所有的属性都按照名称映射到 MasterSlaveServersConfig
和 Config
对象属性上。
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