前文

  1. Redis读写分离原理是Redis主从复制模式,常用模式为一主二从模式;
  2. Redis的Master节点,即主节点,负责Redis的写请求;
  3. Redis的Slave节点,即从节点,负责用户的读请求;

原理

  1. 先启动Redis的Master节点,在启动Redis的Slave节点;
  2. Slave会向Master发送ping包,告诉Master可以分配任务给我了,然后Master会将数据全量复制给Slave;
  3. 传输过程(首次同步):
    • Master会将自己的数据从内存中拿出来,拷贝成一份新的RDB文件;
    • Master通过网络传输将RDB文件发给Slave;
    • Slave拿到以后会先将RDB文件下载到本地磁盘;
    • Slave将下载在本地磁盘的RDB文件加载到内存;
  4. 传输过程(后续同步):
    • Master会将所有写的命令传输给Slave;
    • Slave拿到命令后修改自己的内存数据;

主从复制

# 查看主从节点详细信息
into replication


# 配置当前redis为Slave节点
replicaof <masterip> <masterport>

# 配置Master密码;这里的密码最好Master和Slave都配置;
# 在使用哨兵模式下,Master宕机恢复会变成Slave;
# Slave同步Master数据时就会需要这里的密码
masterauth <master-password>

# 配置当前节点状态为 只读,实现读写分离
replica-read-only yes

无磁盘化复制

当服务器的磁盘读写很慢,而网络环境很不错(网速很快),那使用无磁盘化复制效果会更好;无磁盘化复制还是测试阶段中,不建议投入生产环境;

# 开启无磁盘化复制
repl-diskless-sync yes
# 数据同步之前 等待5秒
repl-diskless_sync_delay 5

注意

Redis主从复制模式一定要开启Redis持久化;在Master节点宕机后Slave节点仍然可以读数据,若此时Master节点恢复并重新投入工作,而又未开启持久化模式,Master节点内存中的数据会全部丢失,从而导致Slave节点的数据同步丢失;

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

那一年,我也变成了光!!