Redis持久化——RDB

Redis持久化——RDB

背景

为什么需要持久化?

Redis是内存数据库,内存中的数据会断电即失,因此需要做持久化避免里面的数据在突然断电的情况丢失。

持久化方式都有哪些?

  1. RDB(Redis DataBase) :将某一时刻的内存快照(snapshot),以二进制方式写入磁盘中.rdb文件的过程。本文重点讲解
  2. AOF(Append Only File) :以日志的形式记录服务器锁处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录
  3. RDB和AOF混合存储

持久化流程

image.png

  1. Redis会单独创建一个子进程来进行持久化
  2. 子进程会将内存写入一个临时的RDB文件
  3. 等持久化过程结束后,用刚写好的临时文件替换原来的文件
  4. 若持久化同时有新的写请求,则复制内存页面的副本,在操作系统os写的时候,使用复制机制

触发及加载

触发条件

  1. 达到配置文件中设置的触发条件
save 900 1 # 900s 即15分钟内写key 1次
save 300 10 # 900s 即5分钟内写key 10次
save 60 10000 # 900s 即1分钟内写key 10000次
  1. flushall清空所有数据库

  2. shutdown退出数据库

  3. 使用save或bgsave

    save会导致redis同步阻塞,基本被废弃

    bgsave,后台执行快照操作,同时可以响应客户端请求,但是当内存不够时,将使用虚拟内存,导致redis阻塞

加载

只要将rdb文件放在下面目录下,在redis启动的时候就会加载

127.0.0.1:6379> config get dir
1) "dir"
2) "D:\\install\\Redis-x64-5.0.10" # rdb文件所在的目录

优缺点对比

优点:

大型数据的持久化效率高,子线程操作的

适用于数据完整性要求不高的场景

缺点:

最后一次保存后的操作会丢失

总结

RDB持久化适用于大型数据持久,且对数据完整性要求不高的场景,是一种常用的数据持久化方式。

posted @ 2022-03-22 16:10  Oh,mydream!  阅读(45)  评论(0编辑  收藏  举报