
- 两种方式: 一种是基于yml方式,一种是基于java config基于maven的pom依赖,哨兵模式在redisson版本>=3.12.5和<3.15.0有问题,项目启动的时候会报错Command execution timeout for command: (SENTINEL SENTINELS) :
https://github.com/redisson/redisson/issues/3404
like #3283
through the test,:
this not happen in 3.12.4
this will happen in 3.12.5 or higher
My current version is 3.15.0, and I use this configuration so that it doesn’t report errors:
org.redisson redisson-spring-boot-starter3.12.4
- yml的配置方式:
spring:
redis:
redisson:
# 配置模式
config: classpath:redisson-sentinel.yml
redisson-sentinel.yml中的内容:
sentinelServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 5000
timeout: 5000
retryAttempts: 3
retryInterval: 1000
password: 1234
subscriptionsPerConnection: 200
clientName: null
loadBalancer: ! {}
slaveConnectionMinimumIdleSize: 5
slaveConnectionPoolSize: 250
masterConnectionMinimumIdleSize: 5
masterConnectionPoolSize: 250
readMode: "SLAVE"
subscriptionMode: SLAVE
# 26379 26380 26381是sentinel中的端口,不是redis的端口
sentinelAddresses:
- "redis://127.0.0.1:26379"
- "redis://127.0.0.1:26380"
- "redis://127.0.0.1:26381"
- #masterName是sentinel中定义的sentinel monitor
masterName: "bidMaster"
database: 0
threads: 0
codec: ! {}
eventLoopGroup: null
- 基于java config的方式:
配置文件:
redisson:
database: 0
password: '1234'
#2、哨兵模式
master-name: bidMaster
sentinel-addresses:
- "redis://127.0.0.1:26379"
- "redis://127.0.0.1:26380"
- "redis://127.0.0.1:26381"
java config类:
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@ConfigurationProperties(prefix = "redisson")
public class RedissonProperties {
private String address;
private String password;
private int slaveConnectionPoolSize = 250;
private int masterConnectionPoolSize = 250;
private String[] sentinelAddresses;
private String masterName;
private int database = 0;
private int idleConnectionTimeout = 10000;
private int connectTimeout = 10000;
private int timeout = 3000;
private int retryAttempts = 3;
private int retryInterval = 1500;
private int reconnectionTimeout = 3000;
private int failedAttempts = 3000;
private int subscriptionsPerConnection = 200;
private String clientName;
private int subscriptionConnectionMinimumIdleSize = 1;
private int subscriptionConnectionPoolSize = 200;
private int connectionMinimumIdleSize = 32;
private int connectionPoolSize = 64;
private int dnsMonitoringInterval = 5000;
private int slaveConnectionMinimumIdleSize = 5;
private int masterConnectionMinimumIdleSize = 5;
private String readMode = "SLAVE";
private String subscriptionMode = "SLAVE";
}
import cn.hutool.core.bean.BeanUtil;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.config.Config;
import org.redisson.config.SentinelServersConfig;
import org.redisson.config.SingleServerConfig;
import org.redisson.config.TransportMode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnClass(Config.class)
@EnableConfigurationProperties(RedissonProperties.class)
public class RedissonConfiguration {
@Autowired
private RedissonProperties redissonProperties;
@Bean(destroyMethod = "shutdown")
@ConditionalOnProperty(name = "redisson.master-name")
public RedissonClient redissonSentinel() {
Config config = new Config();
config.setTransportMode(TransportMode.NIO);
config.setCodec(new JsonJacksonCodec());
SentinelServersConfig sentinelServersConfig = config.useSentinelServers();
BeanUtil.copyProperties(redissonProperties, sentinelServersConfig);
return Redisson.create(config);
}
}
- 项目启动即可
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)