AOF

基础概念

以日志的形式记录了每个写操作

在redis重新运行时,会将这些操作重新执行一遍

文件形式:appendonly.aof

开启AOF需要更改配置文件:appendonly:yes

AOF主要流程

用户--->redis--->aof缓存区---->aof

aof--->redis

三种写回策略

  1. always

    1. 优点:同步写回,数据基本不丢失
    2. 缺点:反复IO,性能影响大
  2. everysec
    1. 优点:性能适中
    2. 缺点:宕机时丢失1秒内的数据
  3. no
    1. 优点:性能好
    2. 缺点:依赖操作系统控制写回,数据丢失风险大

AOF功能开启的配置

6vs7

生成文件地址:

  1. 6是直接和rdb同目录(即我们配置好的dir)
  2. 7改变为在该dir之后又有一个子文件夹/appendonlydir然后存放在子文件夹中

aof文件类型:

  1. 6有且仅有一种
  2. 7有了三种,base aof和incr aof和history aof(由base和incr变化而来,在重新写回后,这次写回之前对应的base和incr成为history,history类型的aof会被redis自动删除)
    1. 同时为了管理这些aof,该子文件夹下还有个manifest(清单)文件来管理这些aof

异常恢复

linux执行redis-check-aof --fix 对应的incr.aof

即可恢复,由于他由对应的语法格式,所以应该是删除不符合语法规则的语句

最差情况,要么丢失一条修改操作,要么丢失一秒的操作

aof的优缺点

寻道问题:

寻道是指在文件中查找特定的命令。Redis的AOF持久化机制不需要寻道,因为它是将命令追加到文件末尾,而不是在文件中查找特定的命令。

优势

  1. 性能高
  2. 可以回滚到之前的版本(可做紧急恢复)
  3. 更好地保护数据不丢失

劣势

  1. 相同情况下aof文件比rdb文件占用空间大,aof文件加载进内存的速度没有rdb文件快
  2. aof运行效率慢于rdb,每秒同步策略效率较好,不同步效率与rdb相同(就是那三种写回策略,毕竟你aof间隔一小会时间就要写入硬盘,可定效率慢)

触发AOF重写

  1. 满足自动触发条件(默认是上次重新进度为100%且incr aof文件达到64mb才可以)
  2. 手动:bgrewriteaof

AOF重写机制重要原理

由于弹幕中,频繁弹到阳哥可能说的有误,所以这边是看官网总结的(7版本)

  1. 当AOF重写时,Redis父进程会打开一个新的incrAOF文件来记录新的写入操作
  2. 子进程会执行原定的重写逻辑并生成新的baseAOF
  3. 在这过程中Manifest文件也开始跟踪新的base和incr
  4. 当他们准备好时,会进行替换操作(即之前的base和incr成为history版本,被新版本替换掉,同时数字部分会叠加),使manifest文件生效

为了避免因AOF重写重复失败和重试而创建许多增量文件的问题,Redis引入了AOF重写限制机制,确保失败的AOF重写将以越来越慢的速度重试。

AOF的更多相关文章

  1. Redis之AOF备份

    redis在进行备份的时候有2种方式:1.RDB:2.AOF:现在主要讲哈AOF的备份 1.找到redis.config配置文件,大部分下载下来和redis-service同目录: 2.打开redie ...

  2. redis持久化RDB和AOF

    Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...

  3. Redis两种持久化方式(RDB&AOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...

  4. Redis的AOF是怎么实现的

    今天通过阅读AOF的实现代码,牵出了许多本来不是必须的话题,也都记下来先: Redis自己搞了一套事件循环机制: http://itindex.net/detail/26944-redis-%E4%B ...

  5. Redis的持久化的两种方式drbd以及aof日志方式

    redis的持久化配置: 主要包括两种方式:1.快照  2 日志 来看一下redis的rdb的配置选项和它的工作原理: save 900 1 // 表示的是900s内,有1条写入,则产生快照 save ...

  6. redis的 rdb 和 aof 持久化的区别 [转]

    aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...

  7. RBD和AOF持久化对比

    RDB和AOF持久化对比 Redis提供了RDB持久化和AOF持久化,本篇文章中将会对这两种机制进行一些对比 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘. ...

  8. Redis提供的持久化机制(RDB和AOF)

    Redis提供的持久化机制 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却 ...

  9. 实验验证redis的快照和AOF

    安装配置redis http://www.cnblogs.com/myrunning/p/4222385.html 验证redis的主从复制 http://www.cnblogs.com/myrunn ...

  10. redis 持久化 如果 AOF 文件出错了,怎么办?

    服务器可能在程序正在对 AOF 文件进行写入时停机, 如果停机造成了 AOF 文件出错(corrupt), 那么 Redis 在重启时会拒绝载入这个 AOF 文件, 从而确保数据的一致性不会被破坏. ...

随机推荐

  1. proxy代理

  2. XSS、CSRF 以及如何防范

  3. treeselect 表单验证解决方法

    https://www.cnblogs.com/wxqworld/p/11203603.html

  4. freeswitch修改mod_sofia模块并上报自定义头域

    概述 在之前的文章中,我们介绍了如何使用fs的event事件机制来获取呼叫的各种信息. 这些event事件一般都是底层模块定义好的,其中的各种信息已经很完备了,日常的开发需求都可以满足. 但是,总有一 ...

  5. jQuery位置 内容 大小 属性 文档的操作

    1. 位置 1. offset() 2. position() 2. 大小 1. 内容(content)>内填充(padding)>边框(border)>外边距(margin) 2. ...

  6. latex · markdown | 如何写矩阵和大公式

    1 \left[\begin{array}{c} a & b \\ c & d \end{array}\right] 效果: \[\left[\begin{array}{c} a &a ...

  7. TICK 中Kapacitor功能和使用说明

    转载请注明出处: 1.Kapacitor 简介 Kapacitor是InfluxData公司开发的一个实时流数据处理引擎.它可以实时地通过TICK脚本处理InfluxDB中的流数据以及批处理数据. K ...

  8. Java 如何将Excel转换为TXT文本格式

    TXT文件是一种非常简单.通用且易于处理的文本格式.在处理大规模数据时,将Excel转为TXT纯文本文件可以提高处理效率.此外,许多编程语言和数据处理工具都有内置的函数和库来读取和处理TXT文件,因此 ...

  9. WPF|如何在 WPF 中设计漂亮的社交媒体信息仪表板

    1. 效果展示 先来直接欣赏效果: 2. 准备 创建一个WPF工程,比如站长使用 .NET 7 创建名为 Dashboard3 的WPF项目,添加一些图片资源,项目目录如下: 2.1 图片资源 可在网 ...

  10. Metastability 亚稳态问题

    亚稳态问题 各种跨时钟域的问题都会归结于亚稳态的问题,IP设计时钟域不超过两个,对于CDC设计要求不高;对于SoC设计来说,CDC处理十分重要 1.什么是亚稳态? transition time 是可 ...