Redis5 设计与源码分析 阅读笔记 04

第20章  持久化

RDB  

1.save 60 1000  : 60秒内有1000个key发生变化,就会触发一次RDB快照的执行

2.在客户端执行bgsave命令,显式触发一次RDB快照的执行,fork 一个子进程执行rdbSave函数进行实际的快照存储工作,

   父进程可以继续处理客户端请求

 加载RDB文件的时候,如何区分加载的是辅助字段还是数据库序号,或者是其他类型?

  RDB 每一部分之前都有一个类型字节,在Redis中称为opcodes

Redis 键都是字符串,LENGTH 表示字符串长度,后面STRING 即具体的字符串内容

LENGTH 为了通用可以使用8个字节保存,但这样很明显会导致空间的浪费,LENGTH是一个变长字段。通过首字节能够知道LENGTH字段有多长,然后读取LENGTH字段可以知道具体的STRING长度。

RDB的优化,可以对字符串进行LZF压缩之后保存

AOF 持久化配置

1.no : 不执行fsync,由操作系统负责数据的刷盘,数据安全性最低,redis性能最高

2.always :每执行一次写入就会执行一次fsync,数据安全性最高但是redis性能很低

3.everysec : 每1秒执行一次fsync操作,属于折中方案,在数据安全性和性能之间达到一个平衡

AOF 重写 : 把类似的操作命令合并成为一条

混合持久化 :

  进行AOF重写时,子进程将当前时间点的数据快照存储为RDB文件格式,而后将父进程累积命令保存为AOF格式

  加载时,首先会识别AOF文件是否以REDIS字符串开头,如果是,就按RDB格式加载,加载完RDB后继续按照AOF格式加载剩余部分

第21章 主从复制

  1.读写分离: 单台redis服务器能支撑的QPS是有上限的;主服务器只处理写请求,从服务器通过复制功能同步主服务器数据

                         只处理读请求,提升查询和写入性能

  2.数据容灾:主从复制,主服务器宕机,可以把从切到主,避免redis服务中断

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.从服务器向主服务器发送sync命令,请求同步数据

2.主服务器接收到sync命令请求,开始执行bgsave命令持久化数据到RDB文件,并且在持久化数据期间把后续新执行的写入命令,都保存到一个缓冲区。

3.持久化数据完成,主服务器把rdb文件发送给从服务器,从服务器接收rdb文件,并将数据加载到内存

4.主服务器将缓冲区的命令发送给从服务器,在从服务器执行这些命令

+++++++++++++++++++++++++++++++++++++++++++++++

Redis2.8 提出了新的主从复制方案

1.从服务器会记录已经从主服务器接收到的数据量(复制偏移量) ,而主服务器,会维护一个复制缓冲区,记录自己已执行且发送给从服务器的命令请求,同时还需要记录复制缓冲区的第一个字节的复制偏移量。从服务器请求同步主服务器的命令也改成了psync。

2.从服务器连接到主服务器时,会向主服务器发送psync命令请求同步数据,同时告诉主服务器自己已经接收到的复制偏移量,主服务器判断该复制偏移量是否还包含在复制缓冲区;如果包含,则不需要持久化操作,直接向从服务器发送复制缓冲区命令即可,成为部分重同步;如果不包含,则需要持久化,然后把所有新执行的写命令缓存在复制缓冲区,并且重置缓冲器第一个字节的复制偏移量,这成为完整重同步。

部分重同步要求:

  1.RUN_ID必须相等

   2.复制偏移量必须包含在复制缓冲区中

repl_ping_slave_period : 主服务器和从服务器是通过TCP长连接交互数据的,就必然需要周期性发送心跳包来检测连接有效性,

该字段表示发送心跳包的周期,主服务器以此周期向从服务器发送心跳包。

复制缓冲区是一个先进先出的循环队列,当写入的数据量超过缓冲区大小时,旧的数据会被覆盖

replicaofCommand函数,是由replicationCron ,每1秒为周期调度,执行主从复制相关操作; 还用于检测主从连接是否超时,定时向主服务器发送心跳包,定时报告自己的复制偏移量

从服务器slaveOf命令处理

1.连接socket

2.发送PING请求包确认连接是否正确

3.发起密码认证,如果需要

4.通过REPLCONF命令同步信息

5.发送PSYNC命令

6.接收RDB文件并载入

7.连接建立完成,等待主服务器同步命令请求


 

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/106189332
今日推荐