130 lines
4.6 KiB
Java
130 lines
4.6 KiB
Java
package com.sipai.config;
|
||
|
||
import org.redisson.Redisson;
|
||
import org.redisson.api.RedissonClient;
|
||
import org.redisson.client.codec.Codec;
|
||
import org.redisson.codec.JsonJacksonCodec;
|
||
import org.redisson.config.Config;
|
||
import org.redisson.config.SingleServerConfig;
|
||
import org.springframework.beans.factory.annotation.Value;
|
||
import org.springframework.context.annotation.Bean;
|
||
import org.springframework.context.annotation.Configuration;
|
||
|
||
import java.util.concurrent.TimeUnit;
|
||
|
||
/**
|
||
* @Author : YYJ
|
||
* @CreateTime : 2021/9/14
|
||
* @Description :
|
||
**/
|
||
@Configuration
|
||
public class RedissonConfig {
|
||
private static String MODE_SINGLE = "single";
|
||
private static String MODE_CLUSTER = "cluster";
|
||
@Value("${redis.mode}")
|
||
public String mode;
|
||
@Value("${redis.host}")
|
||
public String host;
|
||
|
||
@Value("${redis.port}")
|
||
public String port;
|
||
|
||
// @Value("${redis.database}")
|
||
// public String database;
|
||
|
||
@Value("${redis.password}")
|
||
public String password;
|
||
|
||
@Value("${redis.timeout:10000}")
|
||
public int timeout;
|
||
|
||
@Value("${redis.maxIdle:100}")
|
||
public int maxIdle;
|
||
|
||
@Value("${redis.maxActive:300}")
|
||
public int maxActive;
|
||
|
||
@Value("${redis.testOnBorrow:true}")
|
||
public boolean testOnBorrow;
|
||
|
||
@Value("${cluster1.host.port:}")
|
||
public String cluster1;
|
||
@Value("${cluster2.host.port:}")
|
||
public String cluster2;
|
||
@Value("${cluster3.host.port:}")
|
||
public String cluster3;
|
||
@Value("${cluster4.host.port:}")
|
||
public String cluster4;
|
||
@Value("${cluster5.host.port:}")
|
||
public String cluster5;
|
||
@Value("${cluster6.host.port:}")
|
||
public String cluster6;
|
||
|
||
@Bean
|
||
public RedissonClient redissonClient(){
|
||
RedissonClient redisson = null;
|
||
Config conf = new Config();
|
||
|
||
if(MODE_SINGLE.equals(mode)) {//单机
|
||
//单节点模式
|
||
SingleServerConfig singleServerConfig = conf.useSingleServer();
|
||
//设置连接地址:redis://127.0.0.1:6379
|
||
singleServerConfig.setAddress("redis://" + host + ":" + port);
|
||
//设置连接密码
|
||
singleServerConfig.setPassword(password);
|
||
// 设置超时时间(毫秒)
|
||
singleServerConfig.setTimeout(timeout);
|
||
// 设置连接池大小
|
||
singleServerConfig.setConnectionMinimumIdleSize(Math.min(10, maxIdle));
|
||
singleServerConfig.setConnectionPoolSize(maxActive);
|
||
// 设置空闲连接超时
|
||
singleServerConfig.setIdleConnectionTimeout(10000);
|
||
// 设置 ping 间隔,保持连接活跃
|
||
singleServerConfig.setPingConnectionInterval(10000);
|
||
// 设置失败重试次数
|
||
singleServerConfig.setRetryAttempts(3);
|
||
// 设置重试间隔
|
||
singleServerConfig.setRetryInterval(1500);
|
||
// 设置数据库索引
|
||
// singleServerConfig.setDatabase(Integer.valueOf(database));
|
||
}else if(MODE_CLUSTER.equals(mode)){//集群
|
||
conf.useClusterServers()
|
||
.setScanInterval(2000)
|
||
.setTimeout(timeout)
|
||
.setMasterConnectionMinimumIdleSize(Math.min(10, maxIdle))
|
||
.setMasterConnectionPoolSize(maxActive)
|
||
.setSlaveConnectionMinimumIdleSize(Math.min(10, maxIdle))
|
||
.setSlaveConnectionPoolSize(maxActive)
|
||
.setIdleConnectionTimeout(10000)
|
||
.setPingConnectionInterval(10000)
|
||
.setRetryAttempts(3)
|
||
.setRetryInterval(1500);
|
||
if(cluster1!=null && !cluster1.isEmpty()){
|
||
conf.useClusterServers().addNodeAddress("redis://" + cluster1);
|
||
}
|
||
if(cluster2!=null && !cluster2.isEmpty()){
|
||
conf.useClusterServers().addNodeAddress("redis://" + cluster2);
|
||
}
|
||
if(cluster3!=null && !cluster3.isEmpty()){
|
||
conf.useClusterServers().addNodeAddress("redis://" + cluster3);
|
||
}
|
||
if(cluster4!=null && !cluster4.isEmpty()){
|
||
conf.useClusterServers().addNodeAddress("redis://" + cluster4);
|
||
}
|
||
if(cluster5!=null && !cluster5.isEmpty()){
|
||
conf.useClusterServers().addNodeAddress("redis://" + cluster5);
|
||
}
|
||
if(cluster6!=null && !cluster6.isEmpty()){
|
||
conf.useClusterServers().addNodeAddress("redis://" + cluster6);
|
||
}
|
||
// .setPassword(password);
|
||
}
|
||
|
||
//使用 json 序列化方式
|
||
Codec codec = new JsonJacksonCodec();
|
||
conf.setCodec(codec);
|
||
redisson = Redisson.create(conf);
|
||
return redisson;
|
||
}
|
||
}
|