1. 程序化配置方法
Redisson程序化的配置方法是通过构建Config对象实例来实现的。例如:
Config config = new Config();
config.setTransportMode(TransportMode.EPOLL);
config.useClusterServers()
//可以用"rediss://"来启用SSL连接
.addNodeAddress("redis://127.0.0.1:7181");
2. 文件方式配置
Redisson既可以通过用户提供的JSON或YAML格式的文本文件来配置,也可以通过含有Redisson专有命名空间的,Spring框架格式的XML文本文件来配置。
2.1 通过JSON或YAML格式配置
Redisson的配置文件可以是JSON格式或YAML格式。 可以通过调用Config.fromJSON方法并指定一个File实例来实现读取JSON格式的配置:
Config config = Config.fromJSON(new File("config-file.json"));
RedissonClient redisson = Redisson.create(config);
调用Config.toJSON方法可以将一个Config配置实例序列化为一个含有JSON数据类型的字符串:
Config config = new Config();
// ... 省略许多其他的设置
String jsonFormat = config.toJSON();
也通过调用config.fromYAML方法并指定一个File实例来实现读取YAML格式的配置:
Config config = Config.fromYAML(new File("config-file.yaml"));
RedissonClient redisson = Redisson.create(config);
调用config.toYAML方法可以将一个Config配置实例序列化为一个含有YAML数据类型的字符串:
Config config = new Config();
// ... 省略许多其他的设置
String jsonFormat = config.toYAML();
2.2 通过Spring XML命名空间配置
Redisson为Spring框架提供了一套通过命名空间来配置实例的方式。
一个Redisson的实例可以通过这样的方式来配置:
更多的使用方法请前往第三方框架整合文档了解。有关各种连接方式的详细配置请继续本文阅读。
3. 常用设置
以下是关于org.redisson.Config类的配置参数,它适用于所有Redis组态模式(单机,集群和哨兵)
3.1 codec(编码)
默认值: org.redisson.codec.JsonJacksonCodec
Redisson的对象编码类是用于将对象进行序列化和反序列化,以实现对该对象在Redis里的读取和存储。Redisson提供了以下几种的对象编码应用,以供大家选择:
编码类名称
说明
org.redisson.codec.JsonJacksonCodec
org.redisson.codec.AvroJacksonCodec
Avro 一个二进制的JSON编码
org.redisson.codec.SmileJacksonCodec
Smile 另一个二进制的JSON编码
org.redisson.codec.CborJacksonCodec
CBOR 又一个二进制的JSON编码
org.redisson.codec.MsgPackJacksonCodec
MsgPack 再来一个二进制的JSON编码
org.redisson.codec.IonJacksonCodec
Amazon Ion 亚马逊的Ion编码,格式与JSON类似
org.redisson.codec.KryoCodec
Kryo 二进制对象序列化编码
org.redisson.codec.SerializationCodec
JDK序列化编码
org.redisson.codec.FstCodec
FST 10倍于JDK序列化性能而且100%兼容的编码
org.redisson.codec.LZ4Codec
LZ4 压缩型序列化对象编码
org.redisson.codec.SnappyCodec
Snappy 另一个压缩型序列化对象编码
org.redisson.client.codec.JsonJacksonMapCodec
基于Jackson的映射类使用的编码。可用于避免序列化类的信息,以及用于解决使用byte[]遇到的问题。
org.redisson.client.codec.StringCodec
纯字符串编码(无转换)
org.redisson.client.codec.LongCodec
纯整长型数字编码(无转换)
org.redisson.client.codec.ByteArrayCodec
字节数组编码
org.redisson.codec.CompositeCodec
用来组合多种不同编码在一起
3.2 属性配置
属性名
属性简介
默认值
详细说明
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的目的。
只有io.netty.channel.epoll.EpollEventLoopGroup或io.netty.channel.nio.NioEventLoopGroup才是允许的类型。
transportMode
传输模式
TransportMode.NIO
可选参数:
TransportMode.NIO
TransportMode.EPOLL - 需要依赖里有netty-transport-native-epoll包(Linux)
TransportMode.KQUEUE - 需要依赖里有 netty-transport-native-kqueue包(macOS)
lockWatchdogTimeout
监控锁的看门狗超时
单位:毫秒
30000
监控锁的看门狗超时时间单位为毫秒。该参数只适用于分布式锁的加锁请求中未明确使用leaseTimeout参数的情况。如果该看门口未使用lockWatchdogTimeout去重新调整一个分布式锁的lockWatchdogTimeout超时,那么这个锁将变为失效状态。这个参数可以用来避免由Redisson客户端节点宕机或其他原因造成死锁的情况。
keepPubSubOrder
保持订阅发布顺序
true
通过该参数来修改是否按订阅发布消息的接收顺序出来消息,如果选否将对消息实行并行处理,该参数只适用于订阅发布消息的情况。
performanceMode
高性能模式
HIGHER_THROUGHPUT
用来指定高性能引擎的行为。由于该变量值的选用与使用场景息息相关(NORMAL除外)我们建议对每个参数值都进行尝试。
该参数仅限于Redisson PRO版本。
可选模式:
HIGHER_THROUGHPUT - 将高性能引擎切换到 高通量 模式。
LOWER_LATENCY_AUTO - 将高性能引擎切换到 低延时 模式并自动探测最佳设定。
LOWER_LATENCY_MODE_1 - 将高性能引擎切换到 低延时 模式并调整到预设模式1。 LOWER_LATENCY_MODE_2 - 将高性能引擎切换到 低延时 模式并调整到预设模式2。
NORMAL - 将高性能引擎切换到 普通 模式