一、pom文件添加Jedis依賴
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
二、JedisCluster連接ipv6小測試
@Test
public void testJedisCluster()throws Exception{
Set<HostAndPort> 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讀取配置文件信息
讀取配置文件信息可以參考另一篇隨筆:SpringBoot讀取.yml/.properties配置文件
配置文件例子:
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<HostAndPort> 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;
}
}