Skip to content
Xiaoyu's Blog
Go back

redis持久化策略

😀
简单记录Redis的持久化策略。

📝 一、RDB持久化(全量备份)

RDB持久化是指在指定时间间隔内将内存中的数据集快照写入磁盘。实际上fork子线程,先将数据集写入临时文件,写入成功后,在替换之前的文件,用二进制压缩文件,RDB是Redis默认的持久化方式,会在对应目录下生产一个dump.rdb文件,重启会通过加载dump.rdb文件恢复数据。

RDB优点:

  1. 方便持久化:只有一个dump.rdb文件;
  2. 容灾性好:一个文件可以保存到安全的磁盘;
  3. 性能好:fork子线程来完成写操作,主线程继续处理命令;
  4. 效率高:如何数据集偏大,RDB启动效率比AOF高

RDB缺点:

  1. 数据安全性低:因为RDB是每隔一段时间进行持久化,可能会造成数据丢失。
  2. 由于RDB是通过fork子线程协助完成数据持久化工作的,因此如果数据集较大时,可能会导致整个服务停止服务几百毫秒,甚至一分钟。

📝 二、RDB持久化的bgsave命令

Redis提供bgsave命令用来创建RDB文件。当执行bgsave命令时,Redis会在后台异步地执行RDB持久化操作,创建一个RDB文件来备份当前所有数据。这个命令会立即返回,让Redis可以继续处理其他命令。一旦RDB文件创建完成,Redis会更新服务器状态,你可以通过lastsave命令来查看最后一次成功执行RDB持久化的时间。

注意,bgsave命令在Redis主服务器上执行时不会阻塞任何客户端请求,但在从服务器上执行时,会阻塞所有其他客户端请求,直到RDB文件创建完毕。

🤗 三、AOF持久化(增量备份)

AOF持久化是以日志的形式记录记录每一个增删操作然后追加到文件中。AOF的出现是为了弥补RDB备份的不足(数据不一致性)。

与RDB持久化相比,AOF的持久化实时性更好。

AOF的备份策略:

Redis的配置文件中存在三种不同的AOF持久化方式:

AOF优点:

  1. AOF实时性哈好,数据安全性更高;
  2. AOF通过append模式写文件,即使中途服务器宕机,也可以通过redis-check-aof工具解决数据一致性问题。
  3. AOF机制的rewrite模式(文件过大会对命令进行合并重写),可以删除其中某些命令(比如误操作的命令)

AOF缺点:

  1. AOF文件比RDB文件大,且恢复慢;
  2. 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。

🫠 四、Redis AOF之执行flushdb或flushall之后的后悔药


Share this post:

Previous Post
为什么mac地址不能直接用作路由
Next Post
可重复读导致的幻读