Redis 持久化

Redis持久化

Redis有两种方式做持久化(RDB,AOF)

  1. RDB(快照)
    • RDB恢复机制(只需将RDB文件放在我们Redis启动目录就可以了,Redis启动的时候会自动检查恢复其中的数据)
    • RDB触发规则
      • Save 触发
      • flushall 触发
      • 退出 redis 触发
  2. AOF(所有命令记录)
    • 恢复机制同上
    • 原理:把所有命令记录存在AOF中(默认的文件名 append only.aof)
    • 修复AOF工具 (命令行:redis-check-aof-fix '文件名')
    • 重写规则:conf里面有一个语句 auto-aof-rewrite-min-size 64mb (aof文件大于64mb的时候会重写一遍  这个数值可以在 conf里面去配置)
      • 每秒同步一次Aof
      • 每次修改都同步一次Aof
      • 从不同步

各自的优缺点

RDB 优点:

  前提 对数据的完整性要求不高 适合大规模的数据恢复

   缺点:

  需要一定时间间隔进行操作,如果Redis意外宕机了最后一次修改的数据就没有了,Fork子进程的时候会占用一定的内存空间

AOF 优点:

   数据只会丢失两秒内的数据

   缺点:

   数据文件大小 aof>rdb,修复的速度比rdb慢

   运行效率 aof 慢于 rdb

   如果aof 文件有错误,这时候redis 是启动不了的

AOF , RDB 同时开启 启动Redis时会优先加载AOF文件(安全性更好)

性能建议

  RDB 只保留 conf 里边 Save 900 1( 表示如果900秒内至少1个key发生变化(新增、修改和删除),则重写rdb文件 )

  AOF只会丢失不超过两秒的数据,但是带来了持续的IO,rewrite 过程中产生的数据写到新文件 造成的阻塞几乎不可避免

  使用主从 +RDB 主从同时宕机 会丢失十几分钟的数据 启动脚本 要比较 RDB文件选取最新的那个 

。net工程师
原文地址:https://www.cnblogs.com/yuners/p/14352290.html