Redis学习笔记:持久化
本文更新于2021-02-02,使用Redis 6.0.8,操作系统为Deepin 15.11。
Redis的持久化有两种方式:
- 快照(snapshotting):将某一时刻的所有数据都写入磁盘中。
- 只追加文件(append-only file/AOF):将被执行的写命令追加到磁盘中。
当持久化需要创建子进程时,如果Redis服务器占用的内存过大,并且剩余的空闲内存不多或运行在虚拟机上面,可能也会导致系统长时间停顿,也可能引发系统大量地使用虚拟内存。
快照
创建快照文件有以下几种办法:
- 使用
SAVE
命令:Redis服务器在快照文件创建完毕之前都不再响应任何其他命令。 - 使用
BGSAVE
命令:(Windows不支持)Redis服务器会调用fork创建一个子进程,子进程负责将快照文件写入磁盘,父进程继续处理命令请求。 - 使用
SHUTDOWN
命令:Redis服务器将执行一次SAVE
命令,之后关闭服务器,不再执行任何其他命令。 - 使用
save
配置:当任意一个save
配置满足条件时,Redis服务器将执行一次BGSAVE
命令。 - TERM信号:Redis服务器将执行一次
SAVE
命令,之后关闭服务器,不再执行任何其他命令。 - 主服务器收到从服务器的
SYNC
命令:主服务器执行一次BGSAVE
命令。
AOF
重写AOF文件有以下几种办法:
- 使用
BGREWRITEAOF
命令:(Windows不支持)Redis服务器会调用fork创建一个子进程,子进程负责将AOF文件写入磁盘,父进程继续处理命令请求。 - 使用
auto-aof-rewrite-min-size
和auto-aof-rewrite-percentage
配置:当AOF文件超过指定的大小且比上一次重写后增长超过指定的百分比时,进行重写。