Redis持久化
一、RDB(快照):保存某个时间点的全量数据快照
save:阻塞redis的服务器进程,直到RDB文件被创建完成( 基本不用)
bgsave:Fork出一个 子进程来创建RDB文件,不阻塞服务器进程。
自动化触发rdb持久化
1.根据redis. conf配置里的save m n定时触发(bgsave)
2.主从复制时,主节点自动触发
3.执行debug reload
4.执行shutdown 且没有开启aof 持久化
RDB缺点
1.内存数据的全量同步,数据量大会由于I/0而影响性能
2.可能会因为Redis挂掉而丢失当前至最近一次快照期间的数据
二、AOF (append-only-file) :保存写状态
1.记录下除了查询以外的所有变更数据库状态的指令
2.以append的形式追加保存到AOF文件中(增量)
日志重写解决AOF文件大小不断增大的问题:
1.调用fork ()创建一个子进程
2.子进程把新的AOF写到一个临时文件里,不依赖原来的AOF
3.主进程持续将新的变动同时写到内存和原来的AOF里
4.主进程获取子进程重写AOF的完成信号,往AOF同步增量变动
5.使用新的AOF文件替换掉旧的A0F文件
RDB和AOF的优缺点
➢RDB优点 :全量数据快照 ,文件小 ,创建恢复快
➢RDB缺点:无法保存最近一次快照之后的数据
➢AOF优点:可读性高,适合保存增量数据,数据不易丢失
➢AOF缺点:文件体积大,恢复时间长
三、RDB-AOF混合持久化
bgsave做镜像全量持久化,AOF做增量持久化