Redis学习4.1-redis主从复制

1.简介

主从复制(replication):从数据库(slave)是主数据库(master)的数据备份,实时从master获取数据。

master,主要用来写,slave,主要用来

slave可以分担master的读写压力,可实现读写分离。

2.设置slave

master不用做任何改变。在slave执行命令或者配置即可设置。

2.1.客户端命令设置

语法:slaveof 主的ip:主的端口

[redis@localhost ~]$ redis-cli -p 6381
127.0.0.1:6381> slaveof 127.0.0.1 6380
OK
127.0.0.1:6381>

以上就将6381设置为6380的从数据库。

2.2.配置文件启动设置

从数据库配置文件添加内容: slaveof 主的ip:主的端口

port 6381
dir /home/redis/software/redis/redis-4.0.0/data/
dbfilename 6381.rdb

#设置为6380的从数据库
slaveof 127.0.0.1 6380

通过配置文件启动6381后,其就会成为6380的从数据库。

从数据库6381可读,默认为不可写:

127.0.0.1:6381> set name 123
(error) READONLY You can't write against a read only slave.

2.3.取消slave(将slave提升为master)

在slave客户端执行命令:

slaveof no one

3.主从复制的流程(原理)

主从复制过程:建立连接、数据同步(全量复制、部分复制)、命令传播

3.1.阶段一:建立连接

slave向master发送连接请求,成功则保存master的ip和端口信息,建立通信通道socket。

3.2.阶段二:数据同步(全量复制、部分复制)

数据同步阶段,slave请求同步master的数据。

全量复制是将master的全部数据通过socket将rdb文件传输给slave,且slave将其还原。

部分复制是将master在全量复制过程存入复制缓冲区的命令以aof的方式发送给slave,且slave将其还原。

3.2.阶段四:命令传播

复制缓冲区:将master接收的命令存入。

偏移量offset:通过记录offset来确定缓冲区的命令被同步的程度,以便后续继续同步,可以解决网络断续而命令未传播的问题。

【END】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值