一、Redisson配置类
在使用Redisson之前,需要首先将Redisson的配置信息进行初始化。Redisson提供了很多种方式来实现配置信息的初始化,其中最为常用的是通过创建Config对象来设置Redisson的配置信息。创建Config对象有两种方式,一种是通过代码创建,另一种是通过读取配置文件创建。
代码创建Config对象的方式如下:
// 创建单机模式配置对象 Config config = new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); RedissonClient redisson = Redisson.create(config);
配置文件创建Config对象的方式如下:
# 创建单机模式配置对象 singleServerConfig: address: "redis://127.0.0.1:6379" RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream()));
二、Redisson配置读取不到
如果在通过配置文件创建Config对象时,程序运行过程中出现了无法读取配置文件的情况,可以在创建Config对象时先打印日志查看读取了哪些配置文件,以及读取的文件路径是否正确。代码如下:
// 打印日志 Config config = Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream()); log.info("配置文件路径:" + config.toYAML()); // 创建RedissonClient RedissonClient redisson = Redisson.create(config);
三、Redisson配置集群
在Redisson中,可以使用多种方式创建Redis的集群。在代码创建Config对象时,可以使用useClusterServers()方法来创建集群配置对象。在配置文件创建Config对象时,则需要按照以下方式进行配置。
# 集群模式配置 clusterServersConfig: nodeAddresses: - "redis://127.0.0.1:6379" - "redis://127.0.0.1:6380" - "redis://127.0.0.1:6381" RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-cluster.yml").getInputStream()));
四、Redisson配置文件
在使用Redisson时,除了可以通过代码的方式来初始化Redisson的配置信息外,还可以通过配置文件来进行配置。Redisson支持多种配置文件格式,例如properties、json、yml等。以下是一个Redisson的yml配置文件示例:
# 单节点信息配置 singleServerConfig: address: "redis://127.0.0.1:6379" connectionPoolSize: 64 connectionMinimumIdleSize: 32 slaveConnectionPoolSize: 250 masterConnectionPoolSize: 250 readTimeout: 10000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500 # 集群信息配置 # clusterServersConfig: # nodeAddresses: # - "redis://127.0.0.1:6379" # - "redis://127.0.0.1:6380" # - "redis://127.0.0.1:6381" # scanInterval: 1000 # 哨兵模式配置 # sentinelServersConfig: # masterName: myMaster # sentinelAddresses: # - "redis://127.0.0.1:26379" # - "redis://127.0.0.1:26380" # - "redis://127.0.0.1:26381" # masterConnectionPoolSize: 250 # slaveConnectionPoolSize: 250 # readTimeout: 10000 # connectTimeout: 10000 # timeout: 3000 # retryAttempts: 3 # retryInterval: 1500 # Redisson配置项 # threads: 16
五、Redisson配置哨兵
在使用哨兵模式时,需要创建SentinelServersConfig对象,并将其设置为Config对象的配置信息。代码创建SentinelServersConfig对象的方式如下:
SentinelServersConfig sentinelConfig = new SentinelServersConfig(); sentinelConfig.setMasterName("mymaster"); sentinelConfig.addSentinelAddress("redis://127.0.0.1:26379"); sentinelConfig.addSentinelAddress("redis://127.0.0.1:26380"); sentinelConfig.addSentinelAddress("redis://127.0.0.1:26381"); config.useSentinelServers().setMasterName("mymaster") .addSentinelAddress("redis://127.0.0.1:26379") .addSentinelAddress("redis://127.0.0.1:26380") .addSentinelAddress("redis://127.0.0.1:26381");
六、Redisson配置参数
根据Redisson的官方文档,可以根据自己的需要来调整Redisson的各种参数,以达到最优的性能表现。以下是一些常用的配置参数及其说明。
- connectTimeout:连接超时时间,单位:毫秒
- timeout:读写超时时间,单位:毫秒
- retryAttempts:连接失败重试次数,-1表示不限制重试次数
- retryInterval:重试时间间隔,单位:毫秒
- threads:响应请求线程数,最大为16
可以通过以下方式对Redisson的参数进行配置:
Config config = new Config(); config.useSingleServer() .setAddress("redis://127.0.0.1:6379") .setRetryAttempts(3) .setRetryInterval(1500) .setTimeout(3000) .setThreads(8);
七、Redisson配置序列化
为了提高Redisson的性能表现,Redisson在数据存储时使用了高效的序列化机制。在Redisson中,默认使用的是JDK序列化机制,但是考虑到JDK的序列化机制在序列化性能、序列化结果可读性、可靠性等方面存在一些问题,因此Redisson提供了多种序列化方式供用户选择。
常用的序列化方式有三种:JDK序列化、FastJSON序列化和Kryo序列化。其中,Kryo序列化是性能最高的一种序列化方式,但是需要注意的是,Kryo序列化与JDK序列化不兼容,因此在使用Kryo序列化时需要注意操作系统的类型及JDK的版本。
如果要对Redisson的序列化机制进行定制,可以通过以下方式来实现。
// 基于Jackson序列化 SerializationConfig serialConfig = config.getCodec().getSerializationConfig(); serialConfig.setJacksonObjectMapper(new ObjectMapper()); // 基于FastJSON序列化 SerializationConfig serialConfig = config.getCodec().getSerializationConfig(); serialConfig.setSerializer("com.alibaba.fastjson.JSON").setDecoder("com.alibaba.fastjson.JSON"); // 基于Kryo序列化 SerializationConfig serialConfig = config.getCodec().getSerializationConfig(); Kryo kryo = new Kryo(); kryo.register(User.class); kryo.register(Order.class); kryo.register(Item.class); kryo.register(ArrayList.class); kryo.register(LinkedList.class); kryo.register(RedisCommand.class); UnicornKryoPool pool = new UnicornKryoPoolImpl(kryo); serialConfig.setKryoPool(pool);
八、Redisson配置了集群不生效
如果在配置完Redisson集群之后,出现了集群无法使用的情况,可以先检查一下Redisson的版本号是否与Redis的版本是否匹配。Redisson的版本号最好与Redis的版本号一致,否则可能会出现一些兼容性问题。
如果Redisson的版本号与Redis的版本号一致,那么可以通过以下方式来检查Redisson的配置是否正确:
RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-cluster.yml").getInputStream())); // 打印Redisson的日志 ((RLogger)redisson.getConfig().getLogger()).setLevel(Level.DEBUG); log.debug("Redisson配置信息:" + redisson.getConfig().toJSON());
九、Redisson配置yml
在使用Redisson时,可以根据自己的需求对Redisson的参数进行配置。可以将Redisson的配置信息存储在一个名为redisson.yml的文件中,然后通过Config.fromYAML()方法来加载配置信息。以下是一个Redisson的yml配置文件示例:
singleServerConfig: address: "redis://127.0.0.1:6379" connectionMinimumIdleSize: 10 connectionPoolSize: 64 retryAttempts: 3 retryInterval: 1500 connectTimeout: 10000 timeout: 3000 threads: 64