SpringBoot實現Jedis連接ipv6集群


一、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;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM