Redis持久化存储 RDB、AOF

RDB:当Redis保存dump.rdb文件时,Redis server执行以下操作

  • Redis调用focks(),此时拥有父进程和子进程
  • 利用子进程将数据写入(IO)一个临时rdb文件中
  • 当子进程完成写入后,redis会用新rdb文件替代旧的,并删除旧rdb文件

缺点

  • 数据容易丢失(数据完整性)
  • 当写入的数据量较大时,不能够及时响应客户端的请求

AOF 重写和 RDB 创建快照一样,都巧妙地利用了写时复制机制:

  • Redis 执行 fork() ,现在同时拥有父进程和子进程。
  • 子进程开始将新 AOF 文件的内容写入到临时文件。
  • 对于所有新执行的写入命令,父进程一边将它们累积到一个内存缓存中,一边将这些改动追加到现有 AOF 文件的末尾,这样样即使在重写的中途发生停机,现有的 AOF 文件也还是安全的。
  • 当子进程完成重写工作时,它给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾。
  • 现在 Redis 原子地用新文件替换旧文件,之后所有命令都会直接追加到新 AOF 文件的末尾。

待更新…

发布了48 篇原创文章 · 获赞 56 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zhetmdoubeizhanyong/article/details/99345583