Redis的持久化方式


RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储。

AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF 命 令以 redis 协议追加保存每次写的操作到文件末尾.Redis 还能对 AOF 文件进行后台重写,使得 AOF 文件的体积不至于过大。

如果只希望数据在服务器运行的时候存在,也可以不使用任何持久化方式。

如果同时开启两种持久化方式,在这种情况下,当 redis 重启的时候会优先载入 AOF 文件来恢复原始的数据, 因为在通常情况下 AOF 文件保存的数据集要比 RDB 文件保存的数据集要完整。

1、RDB持久化:每过一段时间,将内存中的数据集写入磁盘。

Redis会单独创建一个子线程来进行持久化,会先将数据写入一个临时文件,当所有数据持久化结束后,再用这个临时文件替换之前持久化完成的文件。整个过程主进程没有进行I/O操作,所以效率极高。

保存策略:900   1   900 秒内如果至少有 1 个 key 的值变化,则保存

                  300    10     300 秒内如果至少有 10 个 key 的值变化,则保存

                   60     10000      60 秒内如果至 10000 个 key 的值变化,则保存

2、AOF持久化:通过日志方式记录每个更新操作

Redis重新启动时会读取这个文件,重新执行新建,修改数据的命令来恢复数据。

保存策略:appendfsync always  每产生一条新的修改命令都要执行保存操作,效率低,安全。

       appendfsync everysec     每一秒保存一次

     appendfsync no     不执行保存操作,将数据交给系统处理,更快,但不安全。

缺点:1、比起RDB占用更多的磁盘空间

   2、每次读写都同步,有一定性能压力

   3、恢复速度慢

   4、存在一定bug,可能造成数据无法恢复