Redis持久化

suaxi
2021-01-02 / 0 评论 / 64 阅读 / 正在检测是否收录...

Redis持久化

RDB(Redis DataBase)

在指定的时间间隔内将内存中的数据集体写入磁盘(Sanpshot快照),恢复时将快照文件直接读取到内存中

1.RDB持久化快照保存过程.png

触发机制

1、满足save规则的情况时

2、执行flushall

3、退出redis时,也会产生rdb文件

如何恢复rdb文件

将rdp文件放在redis的启动目录即可,redis启动时会自动检查dump.rdb文件,恢复其中的数据

# 查看目录
127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"
127.0.0.1:6379> 

优点:

  • 适合大规模的数据恢复
  • 对数据的完整性不敏感的业务

缺点:

  • 操作需要一定的时间间隔,特殊情况下,最后一次的修改数据可能会丢失(宕机)
  • fork进程时,会占用一定的空间


AOF(Append Only File)

2.AOF持久化过程.png

以日志的形式记录每个写的操作,将Redis执行过程的所有指令记录下来(不记录读操作),只追加文件不允许改写文件,redis启动时会读取该文件重新构建数据,即:启动时根据日志文件的内容,将写操作从头到尾执行一次已完成数据恢复。

redis.conf配置

3.aof配置默认不开启.png

配置文件默认不开启aof,需手动设置为yes,重启redis即可生效

重写规则

4.aof重写规则.png
当文件大小超过64mb时,会fork一个新的进程来重写文件(文件占用的内存空间会越来越大)

redis-check-aof

aof文件有误,redis启动失败

5.aof文件有误,启动失败.png

如果aof文件中存在错误,可用redis-check-aof --fix命令修复这个文件

6.修复aof文件.png

修复完成之后重新启动redis即可


优点:

  • 没修改一次,都会进行同步,数据的完整性更好
  • 效率更高

缺点:

  • 每秒同步一次,极端情况下可能会丢失最后一秒的数据
  • aof文件远大于rdb文件,修复速度也比rdb慢
  • 整体运行效率比rdb慢

RDB与AOF对比:

7.rdb与aof对比.png

图片来源:狂神说Java

0

评论 (0)

取消