Redis学习(四) -- Redis的主从复制

本文详细介绍了Redis主从复制的概念及实现步骤,并通过实操演示了如何在一个服务器上模拟搭建主从复制环境,验证了主从复制的效果。

 

1、什么是主从复制?

           上一篇学习文章,Redis的持久化方案保证了即使redis服务挂掉或者重启redis服务也不会导致数据丢失,因为有了持久化方案后,重启redis服务时会将硬盘上的数据恢复到内存中,但是当redis服务器的硬盘损坏时也可能会导致数据丢失,通过redis的主从复制机制,就可以避免这种单点故障。如下图:

说明:

  •     主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。
  • 主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。

  • 只有一个主redis,可以有多个从redis。
  • 主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求。

  • 一个redis可以即是主又是从,如下图:

              

2、主从复制设置

   由于是练习,所以我就在一台服务器上模拟进行主从复制。

第一步:复制出一台从机(复制bin目录即可):命令:cp bin/ bin2 -r

          

第二步:修改从机的redis.conf,为从机设置主机ip以及主机port

   语法:slaveof masterip masterport

   

第三步:设置从机的端口号为 6380;(因为是用同一台服务器进行练习,主从ip都一样,所以就设置主从port不一样)

    

第四步:清除从机中的持久化文件;(这一步操作是因为我刚才复制bin文件夹时,将主机中的持久化文件一块儿复制过来了,为达到真正的主从复制效果,将其删除)

       

第五步:启动从机

       

启动之后可以看到,当前已经存在6379和6380两个端口的服务了。

第六步:启动从机客户端;  

           此时要注意,如果直接使用./redis-cli命令启动,则启动的还是默认的ip(127.0.0.1)和端口(6379)的客户端,我们从机端口已经改成了 6380,所以此处启动命令改为   ./redis-cli -p 6380

以上六步操作,我们的主从复制设置就已经完成了。

3、验证

主机端口:6379     从机端口:6380

我们先在主机中进行操作redis数据库,然后看从机中是否会同步主机的操作结果。

首先确定主机和从机数据库中都为空:

            

然后操作主机数据库,新增一条记录

接下来在从机数据库中看刚才在主机中的操作有没有同步过来。

那我们尝试在从机上进行写操作看看

失败,(error) READONLY You can't write against a read only slave.  就是说从机上不能执行写操作,只可以进行读操作。

到此,主从复制就完成了,可以得出结论:

               主机数据一旦发生增删改操作,那么从机会将数据同步到从机中

               从机只有读权限,没有写权限。

 

还有一个主从切换,等学习完后再更新吧,吃饭去吃饭去,好饿!

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

redis学习另外几篇:

Redis的简介以及安装启动

Redis的五种数据类型以及相关操作命令

Redis的持久化方案

主从切换

 

 

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。Redis是一个开源的内存数据结构存储系统,支持多种数据结构,如字符串、哈希、列表等。Redis主从复制是一种数据复制机制,用于将一个Redis服务器的数据复制到其他Redis服务器上。 下面是一个使用Docker Compose配置Redis主从复制的示例: 1. 首先,创建一个名为docker-compose.yml的文件,并在其中定义两个Redis服务,一个作为主服务器,另一个作为从服务器。示例配置如下: ```yaml version: '3' services: redis-master: image: redis ports: - "6379:6379" volumes: - ./redis-master-data:/data command: redis-server --appendonly yes redis-slave: image: redis volumes: - ./redis-slave-data:/data command: redis-server --slaveof redis-master 6379 ``` 2. 在上述配置中,我们定义了两个服务:redis-master和redis-slave。redis-master服务使用Redis官方镜像,并将主服务器的6379端口映射到主机的6379端口。同时,我们将主服务器的数据目录挂载到本地的redis-master-data目录。 3. redis-slave服务也使用Redis官方镜像,并将从服务器的数据目录挂载到本地的redis-slave-data目录。在command字段中,我们使用--slaveof参数指定redis-slave作为redis-master的从服务器,并指定主服务器的地址和端口。 4. 在终端中,进入包含docker-compose.yml文件的目录,并运行以下命令启动Redis主从复制: ```bash docker-compose up -d ``` 5. 等待一段时间,直到两个Redis服务器都成功启动。您可以使用以下命令检查容器的状态: ```bash docker-compose ps ``` 6. 现在,您可以通过连接到主服务器的6379端口来访问Redis主服务器,并将数据复制到从服务器。您可以使用以下命令连接到Redis服务器: ```bash redis-cli -h localhost -p 6379 ``` 7. 在连接到主服务器后,可以执行一些Redis命令来设置和检索数据。这些数据将自动复制到从服务器。 这就是使用Docker Compose配置Redis主从复制的基本步骤。您可以根据需要进行调整和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值