Redis学习(一) 使用docker进行Redis主从复制集群搭建(一主二从模式)

Redis主从复制集群搭建(一主二从模式)

参考资料:
https://blog.csdn.net/yhk724555508/article/details/85338706

1. 集群搭建

(1)安装docker

yum -y install docker
systemctl restart docker

(2)拉取Redis镜像

docker search redis
docker pull dokcer.io/redis

在这里插入图片描述
在这里插入图片描述
(3)在主节点上分别安装redis容器:
在主节点执行:

docker run --net=host --name=master \
           -v $PWD/data/redis-master/:/data \
           -p 6379:6379 \
           -d docker.io/redis:latest redis-server  

在这里插入图片描述
在第一、二个从节点执行:

docker run --net=host --name=slave1 \
           -v $PWD/data/redis-slave1/:/data \
           -p 6379:6379 \
           -d docker.io/redis:latest redis-server 
docker run --net=host --name=slave2 \
           -v $PWD/data/redis-slave2/:/data \
           -p 6379:6379 \
           -d docker.io/redis:latest redis-server  

在这里插入图片描述
在这里插入图片描述
(4)使用docker inspect命令来查看主节点(master)容器的信息
在主节点上执行:

docker inspect master

在这里插入图片描述
在这里插入图片描述
从现实的mater容器的信息可看到,该容器的“IPAddress”项为空,这是因为我们在创建master容器时,指令中有“ --net=host ”,这使得容器的ip即为虚拟机的内网ip。因此,可通过“ifconfig”指令来查看虚拟的ip,此即为容器master的ip。
(5)执行以下指令,进入master容器内部,查看当前节点的redis的角色,因为现在三个节点上的Redis相互独立,还未组建成一个集群,因此其角色都为“master”:

进入容器:
     docker exec -it master bash
进入Redis shell:
     redis-cli
查看Redis信息:
     info replication 

在这里插入图片描述
(6)分别进入其余两个节点(slave1、slave2节点),查看其在Redis集群中的角色,并执行“SLAVEOF master_ip master_port来将其加入Redis集群”

进入容器:
      docker exec -it slave1 bash
进入Redis shell:
      redis-cli    
查看Redis信息:
      info replication
将Redis加入集群:
      SLAVEOF 192.168.100.163 6379

在这里插入图片描述
(7)在主节点(master)上执行“info replication”指令来查看集群信息:

查看Redis集群信息:
     info replication

在这里插入图片描述
此时,可以看到Redis集群已经有两个salve节点了。

2. 集群测试

(1)新建并运行Java项目,向redis集群主节点(master节点)写入数据并获取返回值:

public static void main(String[] args) {
		  //设置IP地址和端口
	      Jedis jedis=new Jedis("192.168.100.163",6379);
	       jedis.set("name","yangkang");
	      jedis.set("Sex","Male");
	      jedis.set("age","8000");
	      jedis.set("collage","xibeigongyedaxue");
	      // 获取数据
	      String name=jedis.get("name");
	      System.out.println("name="+name);
	      String Sex=jedis.get("Sex");
	      System.out.println("data="+Sex);
	      String age=jedis.get("age");
	      System.out.println("name="+age);
	      String collage=jedis.get("collage");
	      System.out.println("data="+collage);
	      jedis.close();
	}

控制台输出的返回值为:

在这里插入图片描述
登录主节点(master节点)查看所有key值及value值:

进入容器:
     docker exec -it master bash
进入redis shell:
     redis-cli
查看所有key值:
     KEYS *
获取key值name对应的valuse值:
     get name

在这里插入图片描述
可以看到key值name对应的value值为"yangkang"
此时在两个从节点(slave1节点、slave2节点)输入相同的指令,如果可以看到相同的key值以及value值,则说明Redis主从复制成功。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值