SpingBoot之集成Redis集群

一、安装Redis集群

安装步骤参照网上教程,Mac安装步骤参照https://github.com/muyl/mac-d...

二、创建SpringBoot工程

SpingBoot之集成Redis集群

  1. 创建Redis配置类

    package com.example.chapterredis.common.config;
    
    import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import redis.clients.jedis.HostAndPort;
    import redis.clients.jedis.JedisCluster;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
*/

@Configuration
public class RedisConfiguration {

private static final Logger logger = LoggerFactory.getLogger(RedisConfiguration.class);

   @Value("${spring.redis.clusterNodes}")
   private String  clusterNodes;
   @Value("${spring.redis.password}")
   private String  auth;
   @Value("${spring.redis.pool.maxActive}")
   private Integer maxTotal;
   @Value("${spring.redis.pool.minIdle}")
   private Integer minIdle;
   @Value("${spring.redis.pool.maxIdle}")
   private Integer maxIdle;
   @Value("${spring.redis.pool.maxWait}")
   private Long    maxWaitMillis;
   @Value("${spring.redis.pool.commandTimeout}")
   private int     commandTimeout;


   @Bean
   public JedisCluster jedisCluster() {
       String[] serverArray = clusterNodes.split(",");
       Set<HostAndPort> nodes = new HashSet<>();
       for (String ipPort : serverArray) {
           String[] ipPortPair = ipPort.split(":");
           nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
       }

       if (!nodes.isEmpty()) {
           String password = getAuth(auth);
           logger.info("redis password:{}", password);
           GenericObjectPoolConfig pool = new GenericObjectPoolConfig();
           pool.setMaxTotal(maxTotal);
           pool.setMinIdle(minIdle);
           pool.setMaxIdle(maxIdle);
           pool.setMaxWaitMillis(maxWaitMillis);
           return new JedisCluster(nodes, commandTimeout, commandTimeout, 5, password, pool);
       }
       return null;
   }

   private String getAuth(String auth) {
       return "".equals(auth) ? null : auth;
   }

}

2. SpringBoot属性文件

spring.redis.clusterNodes=localhost:7000,localhost:7001,localhost:7002,localhost:7003,localhost:7004,localhost:7005
spring.redis.password=
spring.redis.pool.maxActive=5
spring.redis.pool.minIdle=5
spring.redis.pool.maxIdle=1
spring.redis.pool.maxWait=3000
spring.redis.pool.commandTimeout=5000

3. SpringBoot启动类

package com.example.chapterredis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ChapterRedisApplication {

public static void main(String[] args) {
       SpringApplication.run(ChapterRedisApplication.class, args);
   }

}

4. 测试类

package com.example.chapterredis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import redis.clients.jedis.JedisCluster;

@RunWith(SpringRunner.class)
@SpringBootTest(classes={ChapterRedisApplication.class})
public class ChapterRedisApplicationTests {

@Autowired
   private JedisCluster jedisCluster;


   @Test
   public void test2() {
       jedisCluster.set("aaa","123");
       System.out.println(jedisCluster.get("aaa"));
   }

}

##### 三、工程源代码

https://gitee.com/shanksV/chapter-redis.git

#####

相关推荐