- 2.5. 云托管模式
- 2.5.1. 云托管模式设置
- nodeAddresses(节点地址)
- scanInterval(主节点变化扫描间隔时间)
- loadBalancer(负载均衡算法类的选择)
- dnsMonitoringInterval(DNS监控间隔,单位:毫秒)
- subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最小空闲连接数)
- subscriptionConnectionPoolSize(从节点发布和订阅连接池大小)
- slaveConnectionMinimumIdleSize(从节点最小空闲连接数)
- slaveConnectionPoolSize(从节点连接池大小)
- masterConnectionMinimumIdleSize(主节点最小空闲连接数)
- masterConnectionPoolSize(主节点连接池大小)
- idleConnectionTimeout(连接空闲超时,单位:毫秒)
- readMode(读取操作的负载均衡模式)
- subscriptionMode(订阅操作的负载均衡模式)
- connectTimeout(连接超时,单位:毫秒)
- timeout(命令等待超时,单位:毫秒)
- retryAttempts(命令失败重试次数)
- retryInterval(命令重试发送时间间隔,单位:毫秒)
- reconnectionTimeout(重新连接时间间隔,单位:毫秒)
- failedAttempts(执行失败最大次数)
- database(数据库编号)
- password(密码)
- subscriptionsPerConnection(单个连接最大订阅数量)
- clientName(客户端名称)
- sslEnableEndpointIdentification(启用SSL终端识别)
- sslProvider(SSL实现方式)
- sslTruststore(SSL信任证书库路径)
- sslTruststorePassword(SSL信任证书库密码)
- sslKeystore(SSL钥匙库路径)
- sslKeystorePassword(SSL钥匙库密码)
- 2.5.2. 通过JSON、YAML和Spring XML文件配置云托管模式
- 2.5.1. 云托管模式设置
2.5. 云托管模式
云托管模式适用于任何由云计算运营商提供的Redis云服务,包括亚马逊云的AWS ElastiCache、微软云的Azure Redis 缓存和阿里云(Aliyun)的云数据库Redis版
程序化配置云托管模式的方法如下:
Config config = new Config();config.useReplicatedServers().setScanInterval(2000) // 主节点变化扫描间隔时间//可以用"rediss://"来启用SSL连接.addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001").addNodeAddress("redis://127.0.0.1:7002");RedissonClient redisson = Redisson.create(config);
2.5.1. 云托管模式设置
Redisson的云托管模式的使用方法如下:ReplicatedServersConfig replicatedConfig = config.useReplicatedServers();
ReplicatedServersConfig 类的设置参数如下:
nodeAddresses(节点地址)
可以通过host:port的格式来指定云托管模式的多个Redis集群节点的地址。多个节点可以一次性批量添加。所有的主从节点必须在配置阶段全部体现出来。
scanInterval(主节点变化扫描间隔时间)
默认值: 1000
对主节点变化节点状态扫描的时间间隔。单位是毫秒。
loadBalancer(负载均衡算法类的选择)
默认值: org.redisson.connection.balancer.RoundRobinLoadBalancer
在使用多个Elasticache Redis服务节点的环境里,可以选用以下几种负载均衡方式选择一个节点:org.redisson.connection.balancer.WeightedRoundRobinBalancer - 权重轮询调度算法org.redisson.connection.balancer.RoundRobinLoadBalancer - 轮询调度算法org.redisson.connection.balancer.RandomLoadBalancer - 随机调度算法
dnsMonitoringInterval(DNS监控间隔,单位:毫秒)
默认值:5000
用来指定检查节点DNS变化的时间间隔。使用的时候应该确保JVM里的DNS数据的缓存时间保持在足够低的范围才有意义。用-1来禁用该功能。
subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最小空闲连接数)
默认值:1
多从节点的环境里,每个 从服务节点里用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。
subscriptionConnectionPoolSize(从节点发布和订阅连接池大小)
默认值:50
多从节点的环境里,每个 从服务节点里用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。
slaveConnectionMinimumIdleSize(从节点最小空闲连接数)
默认值:32
多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时读取反映速度。
slaveConnectionPoolSize(从节点连接池大小)
默认值:64
多从节点的环境里,每个 从服务节点里用于普通操作(非 发布和订阅)连接的连接池最大容量。连接池的连接数量自动弹性伸缩。
masterConnectionMinimumIdleSize(主节点最小空闲连接数)
默认值:32
多从节点的环境里,每个 主节点的最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。
masterConnectionPoolSize(主节点连接池大小)
默认值:64
主节点的连接池最大容量。连接池的连接数量自动弹性伸缩。
idleConnectionTimeout(连接空闲超时,单位:毫秒)
默认值:10000
如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。
readMode(读取操作的负载均衡模式)
默认值: SLAVE(只在从服务节点里读取)
注:在从服务节点里读取的数据说明已经至少有两个节点保存了该数据,确保了数据的高可用性。
设置读取操作选择节点的模式。可用值为:SLAVE - 只在从服务节点里读取。MASTER - 只在主服务节点里读取。MASTER_SLAVE - 在主从服务节点里都可以读取。
subscriptionMode(订阅操作的负载均衡模式)
默认值:SLAVE(只在从服务节点里订阅)
设置订阅操作选择节点的模式。可用值为:SLAVE - 只在从服务节点里订阅。MASTER - 只在主服务节点里订阅。
connectTimeout(连接超时,单位:毫秒)
默认值:10000
同任何节点建立连接时的等待超时。时间单位是毫秒。
timeout(命令等待超时,单位:毫秒)
默认值:3000
等待节点回复命令的时间。该时间从命令发送成功时开始计时。
retryAttempts(命令失败重试次数)
默认值:3
如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。
retryInterval(命令重试发送时间间隔,单位:毫秒)
默认值:1500
在一条命令发送失败以后,等待重试发送的时间间隔。时间单位是毫秒。
reconnectionTimeout(重新连接时间间隔,单位:毫秒)
默认值:3000
当与某个节点的连接断开时,等待与其重新建立连接的时间间隔。时间单位是毫秒。
failedAttempts(执行失败最大次数)
默认值:3
在某个节点执行相同或不同命令时,连续 失败 failedAttempts(执行失败最大次数) 时,该节点将被从可用节点列表里清除,直到 reconnectionTimeout(重新连接时间间隔) 超时以后再次尝试。
database(数据库编号)
默认值:0
尝试连接的数据库编号。
password(密码)
默认值:null
用于节点身份验证的密码。
subscriptionsPerConnection(单个连接最大订阅数量)
默认值:5
每个连接的最大订阅数量。
clientName(客户端名称)
默认值:null
在Redis节点里显示的客户端名称。
sslEnableEndpointIdentification(启用SSL终端识别)
默认值:true
开启SSL终端识别能力。
sslProvider(SSL实现方式)
默认值:JDK
确定采用哪种方式(JDK或OPENSSL)来实现SSL连接。
sslTruststore(SSL信任证书库路径)
默认值:null
指定SSL信任证书库的路径。
sslTruststorePassword(SSL信任证书库密码)
默认值:null
指定SSL信任证书库的密码。
sslKeystore(SSL钥匙库路径)
默认值:null
指定SSL钥匙库的路径。
sslKeystorePassword(SSL钥匙库密码)
默认值:null
指定SSL钥匙库的密码。
2.5.2. 通过JSON、YAML和Spring XML文件配置云托管模式
配置云托管模式可以通过指定一个JSON格式的文件来实现。以下是JSON格式的配置文件样本。文件中的字段名称必须与ReplicatedServersConfig和Config对象里的字段名称相符。
{"replicatedServersConfig":{"idleConnectionTimeout":10000,"pingTimeout":1000,"connectTimeout":10000,"timeout":3000,"retryAttempts":3,"retryInterval":1500,"reconnectionTimeout":3000,"failedAttempts":3,"password":null,"subscriptionsPerConnection":5,"clientName":null,"loadBalancer":{"class":"org.redisson.connection.balancer.RoundRobinLoadBalancer"},"slaveSubscriptionConnectionMinimumIdleSize":1,"slaveSubscriptionConnectionPoolSize":50,"slaveConnectionMinimumIdleSize":32,"slaveConnectionPoolSize":64,"masterConnectionMinimumIdleSize":32,"masterConnectionPoolSize":64,"readMode":"SLAVE","nodeAddresses":["redis://127.0.0.1:2812","redis://127.0.0.1:2815","redis://127.0.0.1:2813"],"scanInterval":1000,},"threads":0,"nettyThreads":0,"codec":{"class":"org.redisson.codec.JsonJacksonCodec"},"transportMode":"NIO"}
配置云托管模式可以通过指定一个YAML格式的文件来实现。以下是YAML格式的配置文件样本。文件中的字段名称必须与ReplicatedServersConfig和Config对象里的字段名称相符。
---replicatedServersConfig:idleConnectionTimeout: 10000pingTimeout: 1000connectTimeout: 10000timeout: 3000retryAttempts: 3retryInterval: 1500reconnectionTimeout: 3000failedAttempts: 3password: nullsubscriptionsPerConnection: 5clientName: nullloadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}slaveSubscriptionConnectionMinimumIdleSize: 1slaveSubscriptionConnectionPoolSize: 50slaveConnectionMinimumIdleSize: 32slaveConnectionPoolSize: 64masterConnectionMinimumIdleSize: 32masterConnectionPoolSize: 64readMode: "SLAVE"nodeAddresses:- "redis://127.0.0.1:2812"- "redis://127.0.0.1:2815"- "redis://127.0.0.1:2813"scanInterval: 1000threads: 0nettyThreads: 0codec: !<org.redisson.codec.JsonJacksonCodec> {}"transportMode":"NIO"
配置云托管模式还可以通过Spring XML的命名空间来实现。以下是Spring XML格式的配置文件样本。文件中的属性名称在采用了Spring框架的命名规范并与ReplicatedServersConfig和Config对象里的字段名称相符。
<redisson:clientid="redisson"name="redisson1,redisson2"threads="0"netty-threads="0"codec-ref="myCodec"transport-mode="NIO"redisson-reference-enabled="true"codec-provider-ref="myCodecProvider"resolver-provider-ref="myResolverProvider"executor-ref="myExecutor"event-loop-group-ref="myEventLoopGroup"><!--这里的name属性和qualifier子元素不能同时使用。id和name的属性都可以被用来作为qualifier的备选值。--><!--<qualifier value="redisson3"/>--><redisson:replicated-serversidle-connection-timeout="10000"ping-timeout="1000"connect-timeout="10000"timeout="3000"retry-attempts="3"retry-interval="1500"reconnection-timeout="3000"failed-attempts="3"password="do_not_use_if_it_is_not_set"subscriptions-per-connection="5"client-name="none"load-balancer-ref="myLoadBalancer"subscription-connection-minimum-idle-size="1"subscription-connection-pool-size="50"slave-connection-minimum-idle-size="10"slave-connection-pool-size="64"master-connection-minimum-idle-size="10"master-connection-pool-size="64"read-mode="SLAVE"subscription-mode="SLAVE"scan-interval="1000"database="0"><redisson:node-address value="redis://127.0.0.1:6379" /><redisson:node-address value="redis://127.0.0.1:6380" /><redisson:node-address value="redis://127.0.0.1:6381" /></redisson:replicated-servers></redisson:client><!-- 最基本配置 --><redisson:client><redisson:replicated-servers><redisson:node-address value="redis://127.0.0.1:6379" /><redisson:node-address value="redis://127.0.0.1:6380" /><redisson:node-address value="redis://127.0.0.1:6381" />...</redisson:replicated-servers></redisson:client>
