Redis-RDB

123 阅读1分钟

持久化

redis是一个内存数据库,数据保存在内存中,断电即失。为此我们需要将将内存数据写入磁盘,以防止服务关闭时内存数据丢失即持久化。

redis为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。

触发机制

  • 满足save条件会生成dump.rdb
  • 正常完成后退出 会生成dump.rdb
  • flushall 会生成dump.rdb
  • 使用save命令

工作原理

360截图20210503102551110.jpg

  1. 主线程fork出一个子进程进行持久化,本身继续处理客户端的命令
  2. 当主线程修改数据 时采用写时复制策略使得,子进程读取的数据不会发生变化
  3. 如果是使用save命令则主线程会阻塞等待持久化完成

恢复

  1. 查看目录
27.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"
  1. 将rdb文件放到该目录下,重启时自动恢复

优缺点

优点 :

  1. 适合大规模数据恢复

  2. 完整性要求不高 缺点

  3. fork进程需要内存空间

  4. 需要一定间隔进行操作,可能会丢失最后一次修改的数据