Springboot整合DockerRedis集群

使用Docker搭建Redis集群

  1. 创建redis配置文件

    cd /home
    mkdir redis-cluster
    vi redis-cluster.tmpl
    
    port ${PORT}
    protected-mode no
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-announce-ip 192.168.75.50
    cluster-announce-port ${PORT}
    cluster-announce-bus-port 1${PORT}
    appendonly yes
    
  2. 创建docker network

    docker network create redis-net
    
  3. 生成conf和data目录

    for port in `seq 8000 8005`; do \
        mkdir -p ./${port}/conf \
        && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
        && mkdir -p ./${port}/data; \
        done
    

    生成之后的结果:
    Springboot整合DockerRedis集群_第1张图片

  4. 运行创建6个redis容器

    $ for port in `seq 8000 8005`; do \
        docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
        -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
        -v /home/redis-cluster/${port}/data:/data \
        --restart always --name redis-${port} --net redis-net \
        --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
        done
    

    创建之后的结果:
    在这里插入图片描述

  5. 查看生成redis容器的ip信息

    for port in `seq 7000 7005`; do \
        echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
    done
    

    运行之后结果:
    在这里插入图片描述

  6. 进去其中一个容器:

    docker exec -it 68b71beaf434 bash
    
  7. 在容器中执行:

    redis-cli --cluster create 172.19.0.2:8000 172.19.0.3:8001 172.19.0.4:8002 172.19.0.5:8003 172.19.0.6:8004 172.19.0.7:8005 --cluster-replicas 1
    

    运行结果:
    Springboot整合DockerRedis集群_第2张图片

  8. 用redis连接用具测试集群是否能正常连接
    Springboot整合DockerRedis集群_第3张图片

至此,redis集群环境搭建完成。也测试通过!

使用SpringBoot测试Redis集群

  1. 使用idea创建SpringBoot工程,选中redis依赖;

  2. 修改配置文件

    spring:
      redis:
        cluster:
          nodes: 192.168.75.50:8000,192.168.75.50:8001,192.168.75.50:8002,192.168.75.50:8003,192.168.75.50:8004,192.168.75.50:8005
        database: 0
    
  3. 单元测试

    package com.chen.springbootrediscluster;
    
    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.data.redis.core.RedisTemplate;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class RedisClusterTest {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Test
        public void setString(){
            redisTemplate.opsForValue().set("name","hello world");
            redisTemplate.opsForValue().set("age","hello world");
            redisTemplate.opsForValue().set("springboot-redis-test","hello world");
        }
    
        @Test
        public void getString(){
            String name = redisTemplate.opsForValue().get("name").toString();
            String age = redisTemplate.opsForValue().get("age").toString();
    
            System.out.println("name:"+name+",age:"+age);
        }
    }
    
    
  4. 查看单元测试结果是否通过,或者查看redis可视化工具是否有数据写入。
    Springboot整合DockerRedis集群_第4张图片

到此,完成了redis集群的搭建,也通过SpringBoot测试了redis集群。

你可能感兴趣的:(SpringBoot,docker相关)