Redis 提供了两种不同的持久化方法来将数据存储在硬盘中。
1、快照(snapshotting)它可以将存在于某一时刻的所有数据都写入硬盘里面。(适用于容灾备份)
2、只追加文件(append-only file,AOF)它会在执行写命令时,将被执行的写命令复制到硬盘里
这两种方法即可同时使用,也可以单独使用
缺点
(互补关系就不写优点了)
快照:如果系统发生崩溃,用户将丢失最近一次生成快照之后更改的所有数据。
AOF:Redis不断的将被执行的写命令记录到AOF文件里面,随着Redis不断运行,AOF文件体积也会不断增长。还有一个问题就是,Redis重启之后需要重新执行AOF文件记录的所有写命令还原数据,AOF文件过大,导致还原执行的时间可能过长(解决方法重写/压缩AOF文件,见AOF主要配置)Redis加载RDB恢复数据远远快于AOF的方式
配置文件
/etc/redis/redis.conf(Ubuntu18.04,redis4.0.9)
快照主要配置:
客户端通过发送BGSAVE命令来创建一个快照(fork一个子进程负责写入快照,父进程继续处理命令请求)
或者通过发送SAVE命令创建快照,SAVE命令在快照创建完毕前不再响应其他任何命令(不常用)
1、save 60 1000
当“60秒内有1000次写入”这个条件被满足是,Redis会自动触发BGSAVE命令,如果设置了多个save配置