redis持久化
rdb全量二进制备份
在指定时间间隔内将内存的数据集快照写入磁盘,生成的默认文件是dump,rdb
优点:
1、rdb最大限度提高reds性能,父进程不需要参与磁盘io
2、rdb文件紧凑,全量备份,使用与备份和灾难恢复
3、恢复大数据集时比aof快
缺点:rdb在数据集很大时,fork操作会非常耗时
save指令:会阻塞当前的redis服务器,在命令执行期间,redis不处理其他命令。直至备份完成
bgsave指令:fork创建子进程,备份过程由子进程执行,并且在备份同时可以响应客户端请求
自动化触发:通过save 命令设置触发条件,例子 save m n 表示在m秒内有n次数据修改,自动触发bgsave
主从架构:从服务器同步数据时,会发送sync执行同步操作,主服务器会执行bgsave操作
配置信息
#持久化文件名称 dbfilename dump.rdb #持久化文件存储路径 dir /usr/local/redis/data #持久化策略, M秒内有个n个key改动,执行快照 save 3600 1 save 300 100 save 60 10000 #导出rdb数据库文件压缩字符串和对象,默认是yes,会浪费CPU但是节省空间 rdbcompression yes # 导入时是否检查 rdbchecksum yes
aof增量备份
追加的方式存入文件中,重启时会重新执行aof文件以恢复数据,宕机时,可以通过reedis-check-aof 方式检查修复,不影响之前的数据
优点:
1、数据更加安全
2、当aof文件太大时,能后台自动重写aof
3、aof易于理解和解析
缺点:
1、aof文件比同级别的rdb文件的等效大
2、恢复时,aof可能比rdb慢
核心原理
1、每次写入命令会追加到aof_buf缓冲区
2、aof缓冲区根据对应的策略向硬盘做同步操作
3、高频aof会影响性能,特别是每次刷盘操作时
同步方式
2、appendfsync everysec 每秒执行一次
3、appendfsync 不主动同步,由操作系统自动调度刷磁盘,性能最好但不安全
重写机制
手动触发:bgrewriteaof
自动触发:auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 50mb 设置触发rewrite的最小尺寸
配置信息
# 是否开启aof appendonly yes # 文件名称 appendfilename "appendonly.aof" # 同步方式,每秒同步 appendfsync everysec # aof重写期间是否同步 no-appendfsync-on-rewrite no # 重写触发配置 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 50mb # 加载aof时如果有错如何处理 # yes表示如果aof尾部文件出问题,写log记录并继续执行。no表示提示写入等待修复后写 入 aof-load-truncated yes

浙公网安备 33010602011771号