持久化
redis是一个内存数据库,数据保存在内存中,断电即失。为此我们需要将将内存数据写入磁盘,以防止服务关闭时内存数据丢失即持久化。
redis为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。
触发机制
- 满足save条件会生成dump.rdb
- 正常完成后退出 会生成dump.rdb
- flushall 会生成dump.rdb
- 使用save命令
工作原理
- 主线程fork出一个子进程进行持久化,本身继续处理客户端的命令
- 当主线程修改数据 时采用写时复制策略使得,子进程读取的数据不会发生变化
- 如果是使用save命令则主线程会阻塞等待持久化完成
恢复
- 查看目录
27.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"
- 将rdb文件放到该目录下,重启时自动恢复
优缺点
优点 :
-
适合大规模数据恢复
-
完整性要求不高 缺点
-
fork进程需要内存空间
-
需要一定间隔进行操作,可能会丢失最后一次修改的数据