redis持久化策略.pdf

1.什么是持久化

就像是磁盘这样永久性的存储介质将数据进行保存, 出现问题的时候将保存的数据进行恢复使用成为持久化

2.为什么要持久化

防止数据的意外丢失,确保数据的安全性,保障方案

3.持久化过程保存什么

  • 将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据
  • 将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程

    4.持久化方式RDB和AOF

    RDB

  • RDB启动方式 save指令(一)

save指令

  1. 作用:手动执行一次保存操作
  2. 生成一个dump.rdb文件

save工作原理
d832e2320705.png

  1. redis单线程运行,多个客户端请求按照先后顺序执行序列
  2. save指令执行会阻塞当前Redis服务器,直到当前rdb过程完成为止,又可能造成长时间阻塞,线上环境不建议使用save指令;
  • RDB启动方式 bgsave指令(二)

    数据量过大,单线程执行方式造成效率低,后台处理 bgsave指令 作用:手动启动后保存操作,但不是立即执行**

bgsave工作原理
d832e2320705.png

  • RDB启动方式 save配置自动保存(三)

配置数据自动变化的持久化保存方式在conf里面配置save命令,监控key的变化量.
d832e2320705.png
d832e2320705.png
AOF

  • RDB弊端
  • 存储数据量大,效率低
  • 大数据量下的IO性能较低
  • 基于fork创建子进程,内存产生额外消耗
  • 宕机带来的数据丢失风险
  • 解决思路:
  • 不写全数据,仅记录部分数据
  • 改记录数据为记录操作过程
  • 对所有操作进行记录,排除丢失数据的风险

AOF概念

  • AOF持久化:以独立运行的方式记录每次写命令,重启时在重新执行AOF文件中命令达到恢复数据的目的。与RDB相比为改记录数据为记录数据产生的过程。
  • AOF的主要作用是解决了数据持久性的实时性。

AOF写数据三种策略

  • always(每次)数据零误差,性能较低
  • everysec(每秒)数据准确性能较高,宕机情况下丢失1秒的数据
  • no(系统控制)整体过程不可控
  • 启动生成appendonly.aof配置文件

AOF重写
将对同一个数据的若干条命令执行结果转化成最终结果数据对应的指令进行记录。

作用: 降低磁盘占用量,提高磁盘利用率 降低持久化写时间,提高IO性能 提高数据恢复效率.

AOF工作流程
d832e2320705.png
AOF重写流程
d832e2320705.png
RDB VS AOF
d832e2320705.png