版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen18677338530/article/details/90783543
使用Docker搭建Redis集群
-
创建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
-
创建docker network
docker network create redis-net
-
生成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
生成之后的结果:
-
运行创建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
创建之后的结果:
-
查看生成redis容器的ip信息
for port in `seq 7000 7005`; do \ echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \ done
运行之后结果:
-
进去其中一个容器:
docker exec -it 68b71beaf434 bash
-
在容器中执行:
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
运行结果:
-
用redis连接用具测试集群是否能正常连接
至此,redis集群环境搭建完成。也测试通过!
使用SpringBoot测试Redis集群
-
使用idea创建SpringBoot工程,选中redis依赖;
-
修改配置文件
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
-
单元测试
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); } }
-
查看单元测试结果是否通过,或者查看redis可视化工具是否有数据写入。
到此,完成了redis集群的搭建,也通过SpringBoot测试了redis集群。