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,可能造成数据无法恢复