Redis中的主从复制

一、主从复制的概念

  • master可以拥有多个slave
  • 多个slave可以连接一个master外,还可以连接到其它的slave
  • 主从复制不会阻塞master,在同步数据时,master可以继续处理cliect请求
  • 提供系统的伸绪性

其主要目的是为了实现一个读写分离的机制

二、主从复制的过程

1、slave与master建立连接,发送sync同步命令
2、master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
3、后台完成保存后,就将文件发送给slave

4、slave将此数据文件保存到硬盘上

其官网文档地址如下: 

http://redis.cn/topics/replication.html

三、主从复制的配置 

第一步:在192.168.1.108这台服务器上下载redis 7.0版本的镜像

docker pull redis:7.0

第二步:根据下述地址找到其对应版本的配置文件redis.conf 

http://download.redis.io/releases/

在这个文件的下述区域部分讲解了主从复制的一些注意事项,如下图所示: 

第三步: 在/home目录下创建3个目录路径conf1、conf2、conf3

在/home/conf1路径下创建文件redis.conf,其内容的配置内容如下:

port 6381

在/home/conf2路径下创建文件redis.conf,其内容的配置内容如下(关键在于replicaof):

port 6382
replicaof 192.168.1.108 6381

在/home/conf3路径下创建文件redis.conf,其内容的配置内容如下: 

port 6383
replicaof 192.168.1.108 6381

一般情况下,我们是不需要更改redis的任何配置就可以直接启动其服务,仅仅是在当前这种需求下才需要修改配置文件,配置文件中的内容仅仅是对默认配置的替换,其它的还是保持默认配置。

第四步: 使用下述命令启动redis的主节点

docker run -id -p 6381:6381 \
-v /home/redis/conf1:/usr/local/etc/redis \
--name redis_master redis:7.0 \
redis-server /usr/local/etc/redis/redis.conf

使用下述命令连接到redis客户端中,如果服务的默认端口号没有改变的话则不需要后面的-p参数:

redis-cli -p 6381

使用下述命令启动两个从节点: 

docker run -id -p 6382:6382 \
-v /home/redis/conf2:/usr/local/etc/redis \
--name redis_slave1 redis:7.0 \
redis-server /usr/local/etc/redis/redis.conf
docker run -id -p 6383:6383 \
-v /home/redis/conf3:/usr/local/etc/redis \
--name redis_slave2 redis:7.0 \
redis-server /usr/local/etc/redis/redis.conf

第五步: 在主节点写入数据后,从节点也可以查询到相应的数据。

主节点可以进行读写操作,从节点只能进行读操作,如果进行写操作会报下述错误信息:

(error) READONLY You can't write against a read only replica

 

使用info命令可以查看redis服务的角色是主服务还是从服务:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值