此项目的集群指的是 六台服务器,三主三从的集群,并非是哨兵机制;
关于哨兵机制的稍后补充。鉴于实际开发中这种的集群模式真的用的很少,很多都是哨兵模式开发,此处也不详述,代码留作后用
pom
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
**配置文件 **
# Redis
spring.redis.password=
# 最大 连接 数量
spring.redis.pool.max-active=8
# # 阻塞等待时间 -1==forever
spring.redis.pool.max-wait=3000
# 最大空闲数量
spring.redis.pool.max-idle=4
#最小空闲数量
spring.redis.pool.min-idle=2
#连接超时时间
spring.redis.timeout=0
# redis.cluster
spring.redis.cluster.nodes=20.4.16.10:6379,20.4.16.10:7002,20.4.16.10:7003,20.4.16.10:7004,20.4.16.10:7005,20.4.16.10:7006
JedisCluster
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
@ConditionalOnClass({ JedisCluster.class }) // 初始化一个类
public class RedisConfig {
@Value("${spring.redis.cluster.nodes}")
private String clusterNodes;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.pool.max-wait}")
private long maxWaitMillis;
@Bean
public JedisCluster getJedisCluster() {
String[] cNodes = clusterNodes.split(",");
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
// 分割出集群节点
for (String node : cNodes) {
String[] hp = node.split(":");
nodes.add(new HostAndPort(hp[0], Integer.parseInt(hp[1])));
}
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 创建集群对象
// JedisCluster jedisCluster = new JedisCluster(nodes,commandTimeout);
return new JedisCluster(nodes, commandTimeout, jedisPoolConfig);
}
}