SpringBoot实现Jedis连接ipv6集群
一、pom文件添加Jedis依赖
redis.clients
jedis
3.0.1
二、JedisCluster连接ipv6小测试
@Test
public void testJedisCluster()throws Exception{
Set nodes = new HashSet<>();
nodes.add(new HostAndPort("::1",7001));
nodes.add(new HostAndPort("::1",7002));
nodes.add(new HostAndPort("::1",7003));
nodes.add(new HostAndPort("::1",7004));
nodes.add(new HostAndPort("::1",7005));
JedisCluster jedisCluster = new JedisCluster(nodes,1000,1000,1,"123456" ,new GenericObjectPoolConfig());
jedisCluster.set("test", "my jedisCluster test");
String str = jedisCluster.get("test");
System.out.println(str);
//jedisCluster.close(); // springboot执行close()会报错
}
三、Jedis读取配置文件信息
参考文章
读取配置文件信息可以参考另一篇随笔:
配置文件例子:
test:
max-redirects: 5
ip-nodes: ::1/7000,::1/7001,::1/7002,::1/7004
open: false # 是否开启redis缓存 true开启 false关闭
database: 0
password: 123456 # 密码(默认为空)
timeout: 6000 # 连接超时时长(毫秒)
jedis:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
读取配置信息,创建JedisCluster:
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import java.util.HashSet;
import java.util.Set;
@Configuration
@PropertySource("classpath:bootstrap.yml")
public class JedisClusterConfig {
@Value("${test.ip-nodes}")
private String clusterNodes;
@Value("${test.password}")
private String password;
@Value("${test.timeout}")
private Integer timeout;
@Value("${test.jedis.max-active}")
private Integer maxActive;
@Value("${test.jedis.max-wait}")
private Integer maxWait;
@Value("${test.jedis.max-idle}")
private Integer maxIdle;
@Value("${test.jedis.min-idle}")
private Integer minIdle;
@Bean
public JedisCluster getJedisCluster() {
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxWaitMillis(maxWait);
config.setMinIdle(minIdle);
config.setMaxIdle(maxIdle);
String[] serverArray = clusterNodes.split(","); // 获取集群ip数组;
Set nodes = new HashSet<>();
for (String ipPort : serverArray) {
String[] ipPortPair = ipPort.split("/",2); // 分割ip和port
nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
}
JedisCluster jedisCluster = new JedisCluster(nodes,timeout,timeout,1,password ,config);
jedisCluster.set("test", "my jedisCluster test");
String str = jedisCluster.get("test");
System.out.println(str);
return jedisCluster;
}
}