作用
持久化功能可以有效地避免因进程推出造成的数据丢失问题,当下次重启时利用之前持久化的文件既可实现数据恢复
持久化的方式
- RDB持久化
- AOF持久化
RDB持久化
持久化方式
RDB持久化是把当前进程数据生成快照保存到磁盘的过程
触发机制
- 客户端执行save命令
- 使用save配置,例如save m n在m秒内数据集存在n次修改
- 从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点
- 执行debug reload命令重新加载redis时,也会自动触发save操作
- 执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave
流程
注意点
- RDB方式数据没办法做到实时持久化/秒级持久化,因为bgsave每次运行都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高
- RDB文件使用特定二进制格式保存,会存在老版本无法兼容新版本RDB格式的问题
AOF持久化
持久化方式
以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的
触发机制
需要在配置文件中设置 appendonly yes
流程
注意点
- 子进程执行期间使用copy-on-write机制与父进程共享内存,避免内存消耗翻倍