redis主从基于sentinel哨兵项目文件配置(基于springboot)

redis主从基于sentinel哨兵项目文件配置(基于springboot),第1张

redis主从基于sentinel哨兵项目文件配置(基于springboot)
    两种方式: 一种是基于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-starter
                3.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);
    }
}

 

 
    项目启动即可

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存