Redisson官⽅⽂档-2.配置⽅法
2.1. 程序化配置⽅法
Redisson程序化的配置⽅法是通过构建Config对象实例来实现的。例如:
Config config = new Config();
config.tTransportMode(TransportMode.EPOLL);
从小事做起
config.uClusterServers()
//可以⽤"rediss://"来启⽤SSL连接
.addNodeAddress("redis://127.0.0.1:7181");
2.2. ⽂件⽅式配置
Redisson既可以通过⽤户提供的JSON或YAML格式的⽂本⽂件来配置,也可以通过含有Redisson专有命名空间的,Spring框架格式的XML⽂本⽂件来配置。
2.2.1 通过JSON或YAML格式配置
Redisson的配置⽂件可以是JSON格式或YAML格式。
可以通过调⽤Config.fromJSON⽅法并指定⼀个File实例来实现读取JSON格式的配置:
Config config = Config.fromJSON(new File("config-file.json"));
RedissonClient redisson = ate(config);
调⽤JSON⽅法可以将⼀个Config配置实例序列化为⼀个含有JSON数据类型的字符串:
Config config = new Config();
// ... 省略许多其他的设置
String jsonFormat = JSON();
也通过调⽤config.fromYAML⽅法并指定⼀个File实例来实现读取YAML格式的配置:
Config config = Config.fromYAML(new File("config-file.yaml"));
氛围怎么读RedissonClient redisson = ate(config);
夏天美女
调⽤YAML⽅法可以将⼀个Config配置实例序列化为⼀个含有YAML数据类型的字符串:
Config config = new Config();
// ... 省略许多其他的设置
String jsonFormat = YAML();
2.2.2 通过Spring XML命名空间配置
Redisson为Spring框架提供了⼀套通过命名空间来配置实例的⽅式。
⼀个Redisson的实例可以通过这样的⽅式来配置:
<redisson:client>
<redisson:single-rver ... />
<!-- 或者 -->
<redisson:master-slave-rvers ... />
<!-- 或者 -->
<redisson:ntinel-rvers ... />
<!-- 或者 -->
<redisson:cluster-rvers ... />
<!-- 或者 -->
<redisson:replicated-rvers ... />
</redisson:client>
更多的使⽤⽅法请前往了解。有关各种连接⽅式的详细配置请继续本⽂阅读。
2.3. 常⽤设置
以下是关于disson.Config类的配置参数,它适⽤于所有Redis组态模式(单机,集群和哨兵)
codec(编码)
默认值: dec.JsonJacksonCodec
Redisson的对象编码类是⽤于将对象进⾏序列化和反序列化,以实现对该对象在Redis⾥的读取和存储。Redisson提供了以下⼏种的对象编码应⽤,以供⼤家选择:
编码类名称说明
threads(线程池数量)
默认值: 当前处理核数量 * 2
这个线程池数量被所有RTopic对象监听器,RRemoteService调⽤者和RExecutorService任务共同共享。
nettyThreads (Netty线程池数量)
默认值: 当前处理核数量 * 2
这个线程池数量是在⼀个Redisson实例内,被其创建的所有分布式数据类型和服务,以及底层客户端所⼀同共享的线程池⾥保存的线程数量。
executor(线程池)
单独提供⼀个⽤来执⾏所有RTopic对象监听器,RRemoteService调⽤者和RExecutorService任务的线程池(ExecutorService)实例。
eventLoopGroup
⽤于特别指定⼀个EventLoopGroup. EventLoopGroup是⽤来处理所有通过Netty与Redis服务之间的连接发送和接受的消息。每⼀个Redisson都会在默认情况下⾃⼰创建管理⼀个EventLoopGroup实例。因此,如果在同⼀个JVM⾥⾯可能存在多个Redisson实例的情况下,采取这个配置实现多个Redisson实例共享⼀个EventLoopGroup的⽬的。
只有ioty.channel.epoll.EpollEventLoopGroup或ioty.channel.nio.NioEventLoopGroup才是允许的类型。
数学之神transportMode(传输模式)
默认值:TransportMode.NIO
可选参数:
TransportMode.NIO,
TransportMode.EPOLL - 需要依赖⾥有netty-transport-native-epoll包(Linux)
TransportMode.KQUEUE - 需要依赖⾥有 netty-transport-native-kqueue包(macOS)
lockWatchdogTimeout(监控锁的看门狗超时,单位:毫秒)
默认值:30000
监控锁的看门狗超时时间单位为毫秒。该参数只适⽤于分布式锁的加锁请求中未明确使⽤leaTimeout参数的情况。如果该看门⼝未使
⽤lockWatchdogTimeout去重新调整⼀个分布式锁的lockWatchdogTimeout超时,那么这个锁将变为失效状态。这个参数可以⽤来避免由Redisson客户端节点宕机或其他原因造成死锁的情况。
keepPubSubOrder(保持订阅发布顺序)
默认值:true
通过该参数来修改是否按订阅发布消息的接收顺序出来消息,如果选否将对消息实⾏并⾏处理,该参数只适⽤于订阅发布消息的情况。
performanceMode(⾼性能模式)
默认值:HIGHER_THROUGHPUT
⽤来指定⾼性能引擎的⾏为
该参数仅限于Redisson PRO版本。
可选模式:
HIGHER_THROUGHPUT - 将⾼性能引擎切换到 ⾼通量 模式。
LOWER_LATENCY - 将⾼性能引擎切换到 低延时 模式 。
2.4. 集群模式
集群模式除了适⽤于Redis集群环境,也适⽤于任何云计算服务商提供的集群模式,例如AWS ElastiCache集群版、Azure Redis Cache 和阿⾥云(Aliyun)的云数据库Redis版。
程序化配置集群的⽤法:
Config config = new Config();
config.uClusterServers()
.tScanInterval(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 = ate(config);
2.4.1. 集群设置
介绍配置Redis集群组态的⽂档在这⾥。 Redis集群组态的最低要求是必须有三个主节点。Redisson的集群模式的使⽤⽅法如下:ClusterServersConfig clusterConfig = config.uClusterServers();图层
ClusterServersConfig 类的设置参数如下:
nodeAddress(添加节点地址)
可以通过host:port的格式来添加Redis集群节点的地址。多个节点可以⼀次性批量添加。
scanInterval(集群扫描间隔时间)
默认值: 1000
对Redis集群节点状态扫描的时间间隔。单位是毫秒。
readMode(读取操作的负载均衡模式)
默认值: SLAVE(只在从服务节点⾥读取)
注:在从服务节点⾥读取的数据说明已经⾄少有两个节点保存了该数据,确保了数据的⾼可⽤性。
设置读取操作选择节点的模式。
可⽤值为:
SLAVE - 只在从服务节点⾥读取。
MASTER - 只在主服务节点⾥读取。
MASTER_SLAVE - 在主从服务节点⾥都可以读取。
subscriptionMode(订阅操作的负载均衡模式)
默认值:SLAVE(只在从服务节点⾥订阅)
设置订阅操作选择节点的模式。
可⽤值为:
SLAVE - 只在从服务节点⾥订阅。
MASTER - 只在主服务节点⾥订阅。
loadBalancer(负载均衡算法类的选择)
默认值: tion.balancer.RoundRobinLoadBalancer
在多Redis服务节点的环境⾥,可以选⽤以下⼏种负载均衡⽅式选择⼀个节点:
subscriptionConnectionMinimumIdleSize(从节点发布和订阅连接的最⼩空闲连接数)
默认值:1
多从节点的环境⾥,每个 从服务节点⾥⽤于发布和订阅连接的最⼩保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持⼀定数量的发布订阅连接是必须的。
subscriptionConnectionPoolSize(从节点发布和订阅连接池⼤⼩)
默认值:50
多从节点的环境⾥,每个 从服务节点⾥⽤于发布和订阅连接的连接池最⼤容量。连接池的连接数量⾃动弹性伸缩。
slaveConnectionMinimumIdleSize(从节点最⼩空闲连接数)
默认值:32
多从节点的环境⾥,每个 从服务节点⾥⽤于普通操作(⾮ 发布和订阅)的最⼩保持连接数(长连接)。长期保持⼀定数量的连接有利于提⾼瞬时读取反映速度。
slaveConnectionPoolSize(从节点连接池⼤⼩)
默认值:64
多从节点的环境⾥,每个 从服务节点⾥⽤于普通操作(⾮ 发布和订阅)连接的连接池最⼤容量。连接池的连接数量⾃动弹性伸缩。
masterConnectionMinimumIdleSize(主节点最⼩空闲连接数)
默认值:32
哈比鹰
多节点的环境⾥,每个 主节点的最⼩保持连接数(长连接)。长期保持⼀定数量的连接有利于提⾼瞬时写⼊反应速度。
masterConnectionPoolSize(主节点连接池⼤⼩)
默认值:64
多主节点的环境⾥,每个 主节点的连接池最⼤容量。连接池的连接数量⾃动弹性伸缩。
法国建筑风格idleConnectionTimeout(连接空闲超时,单位:毫秒)
默认值:10000
如果当前连接池⾥的连接数量超过了最⼩空闲连接数,⽽同时有连接空闲时间超过了该数值,那么这些连接将会⾃动被关闭,并从连接池⾥去掉。时间单位是毫秒。
connectTimeout(连接超时,单位:毫秒)
默认值:10000
同任何节点建⽴连接时的等待超时。时间单位是毫秒。
timeout(命令等待超时,单位:毫秒)
默认值:3000
等待节点回复命令的时间。该时间从命令发送成功时开始计时。
retryAttempts(命令失败重试次数)
默认值:3
如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送⾄某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启⽤ timeout(命令等待超时) 计时。
retryInterval(命令重试发送时间间隔,单位:毫秒)
默认值:1500
在⼀条命令发送失败以后,等待重试发送的时间间隔。时间单位是毫秒。
工厂英语reconnectionTimeout(重新连接时间间隔,单位:毫秒)
默认值:3000