五、Redis持久化(数据备份与恢复)
1. 持久化的概念
redis的持久化是将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。
redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
持久化过程保存什么?
10011001110000001 00101001011010110 10110011001110000 00100101001011011 数据(快照) RDB |
RDB 的优点:
- RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集
- RDB 非常适用于灾难恢复(disaster recovery)
- RDB 可以最大化 Redis 的性能
- RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快
RDB 的缺点:
1)需要尽量避免在服务器故障时丢失数据, RDB 不适合, RDB 文件需要保存整个数据集的状态, 一旦发生故障停机, 你就可能会丢失好几分钟的数据
2)数据集比较庞大时, fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端
(1)将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据
删除第3行 第4行末位添加字符x 删除第2到第4行 复制第3行粘贴到第5行 过程(日志) AOF |
(2)将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程
AOF 的优点:
- AOF 持久化会让 Redi