Redis持久化-AOF

AOF

AOF持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的.
AOF的主要作用是解决了数据持久化的实时性,目前已经时redis持久化的主流方式

AOF写数据的过程
在这里插入图片描述
AOF写数据的三种策略

  1. always(每次)
    每次写入操作均同步到AOF文件中,数据零误差,性能较低,不建议使用
  2. everysec(每秒)
    每秒将缓存区中的指令同步到AOF文件中,数据准确性较高,性能较高,在系统突然宕机的情况下丢失1秒的数据,默认配置,建议使用
  3. no(系统控制)
    由操作系统控制每次同步到AOF文件的周期,整体过程不可控

AOF重写
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积,AOF文件重写是将redis进程内的数据转化成写命令同步到新AOF文件的过程.简单说就是将同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录.
在这里插入图片描述
AOF重写的作用

  • 降低磁盘占用率,提高磁盘利用率
  • 提高持久化效率,降低持久化写时间,提高IO性能
  • 降低数据恢复用时,提高数据恢复效率

AOF重写规则

  • 进程内已超时的数据不再写入文件

  • 忽略无效指令,重写时使用进程内数据直接生成,这样的新的AOF文件只保留最终数据的写入命令

  • 对同一数据的多条写命令合并成为一条命令
    如:lpush list1 a,lpush list1 b,lpush list1 c 转化为:lpush list1 a b c
    注意的是:为防止数据量过大造成客户端缓存区溢出,对list,set,hash,zset等类型,每条指令最多写入64个元素

    AOF手动重写
    指令:bgrewriteaof

    AOF手动重写-bgrewriteaof指令工作原理
    和bgsave基本一样,只是提示信息和生成文件不同
    在这里插入图片描述
    AOF自动重写配置

    • 自动重写出发条件的设置
      auto-aof-rewrite-min-size size (当数据达到size大小进行重写)
      auto-aof-rewrite-percentage percent(自动重写的百分比)
    • 自动重写出发比对参数(运行指令info Persistence获取具体信息)
      aof_current_size(当前的大小)
      aof_base_size (基础的大小)
    • 自动重写触发条件
      aof_current_size>auto-aof-rewrite-min-size
      (aof_current_size-aof_base_size)/aof_base_size>=auto-aof-rewrite-percentage
      AOF重写过程
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值