Redis提供了不同级别的持久化方式:
RDB持久化方式能够在指定的时间间隔能对数据进行快照存储
AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令
来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾
redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大
如果只希望数据在服务器运行的时候存在,也可以不使用任何持久化方式
也可以同时开启两种持久化方式,这种情况下,当redis重启的时候会优先载入
AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比rdb文件保存
的数据集要完整
RDB的优点:
RDB是一个非常紧凑的文件,保存了某个时间点的数据集,非常实用数据集的备份
Redis持久化配置及命令:
默认情况下,Redis将数据库快照保存在名为dump.rdb的二进制文件中,称为snapshotting
工作方式:
当redis需要保存dump.rdb文件时,服务器执行:
redis调用forks. 同时拥有父进程和子进程
子进程将数据集写入到一个临时RDB文件中
当子进程完成对新RDB文件的写入时,redis用新rdb文件替换原来的rdb文件,并删除旧的rdb文件
RDB的配置:
在配置文件中已经预设3个条件:
save 900 1 # 15分钟内至少有一个键被更改
save 300 10 # 5分钟内至少有10个键被更改
save 60 10000 # 1分钟内至少有10000个键被更改
默认的rdb文件路径是当前目录,文件名是:dump.rdb,可以在配置文件中修改路径和文件名
分别是dir和dbfilename
dir ./ # rdb文件存储路径
dbfilename dump.rdb #rdb文件名
RDB文件的压缩:
rdb文件是通过压缩,可以通过配置rdbcompression参数来禁用压缩,默认是开启压缩的
#save
#bgsave 后台保存