一、AOF是什么

AOF(Append Only File)是继RDB之后产生,为了解决RDB容易丢失最后一次快照的问题,就产生了AOF技术。AOF就是以日志的形式记录下redis所有的写操作(不记录读操作),只允许在日志文件后面追加内容,不允许进行修改,redis的启动之初就会读取该文件,并从头到尾执行一次,以完成数据的恢复。

二、AOF的配置信息

appendonly:AOF默认是no,设置为yes启动AOF技术

appendfilename:AOF的日志文件名(不建议更改)

appendfsysnc:AOF的保存策略,

1.always:同步持久化,每进行写操作时,立即记录到磁盘中

2.everysec:异步操作,每秒进行一次日志保存,如果在一秒钟之内

redis进程挂掉,那么会丢失数据

3.NO:不进行持久化操作

auto-aof-rewrite-percentage:AOF文件的大小超过上一次文件的多少百分比进行rewrite

auto-aof-rewrite-min-size:AOF文件大小超过多少时,进行rewrite。

(上面两项配置需要同时满足时才会进行rewrite)

no-appendfsync-on-rewrite:redis在进行rewrite时是否可以用appendfsysnc的策略,默认使用no,保证日志文件的安全性。

三、AOF与RDB能否共存?(以及AOF日志文件修复)

可以共存,但是redis会优先去读取AOF的日志文件,如果AOF的日志文件出错,那么redis就会启动失败,可以先将出错的AOF日志文件进行备份然后使用redis-check-aof-fix进行修复。(什么时候AOF日志文件会出错?如果AOF在写日志文件写了一半时,redis突然宕了,那么AOF日志文件就会出现错误的语句)

四、AOF的Rewrite机制

因为AOF的日志文件采用的是追加的方式,所以不可避免的日志文件会越来越大,为了避免这样的情况,AOF就采用了rewirite(重写)机制,当AOF文件的大小超过了设定的阈值,那么redis就会启动AOF的内容压缩,只保留可以恢复数据的最小指令集。

重写的原理:当AOF的文件超过阈值时,就会fork一个新的进程来对AOF文件进行内容的压缩。

五、AOF如何恢复数据

首先需要启动AOF服务,在配置文件中设置appendonly为yes。

将有保存数据的AOF文件复制一份到相应的目录下,重新启动redis服务,恢复数据

如果是因为异常关闭,需要使用redis-check-aof-fix修复AOF文件,再继续操作。

六、AOF的优势与劣势

优势:灵活(有多种的同步策略)、数据的完整性比RDB强(每秒,或者每个操作就进行一次同步)

劣势:相同的数据集下,AOF的文件会远比RDB大(因为AOF需要保存每次的写操作)

AOF的运行效率会比RDB慢(AOF需要依次执行每一条写操作)

五、RDB和AOF使用总结

RDB持久化能在指定的时间间隔对数据进行快照存储

AOF持久化能记录每次对服务器的写操作,通过重复执行写操作来恢复数据

如果只想让redis进行缓存服务,那么可以不开启RDB与AOF持久化服务

如果需要,官方建议同时开启两种持久化方式,其中主要使用AOF来进行数据的恢复,RDB作为一个备用的手段,因为AOF在不断的变化,不好备份,而且可以防止AOF出现了什么BUG导致数据的丢失。

关于性能方面的配置:

redis的持久化操作2 AOF相关推荐

  1. Redis的持久化操作---RDBAOF

    Redis的持久化操作-RDB&AOF RDB(Redis DataBase):Rdb 保存的是dump.rdb文件 顾名思义,他是一个redis的一个数据库备份文件,是一个快照,可以保存当前 ...

  2. Redis解读持久化RDB和AOF原理

    我们知道关系型数据库比如MySQL支持全备.差备.增备.为了保证Redis故障重启后仍然可用我们的Redis支持全备(RDB快照备份)和增备(AOF日志连续增量备份),下面我们就来解读Redis持久化 ...

  3. redis的持久化操作

    Redis 持久化 Redis 如何将数据写入磁盘(仅附加文件.快照等) 持久性是指将数据写入持久存储,例如固态磁盘 (SSD).Redis 本身提供了一系列持久化选项: RDB(Redis 数据库) ...

  4. 【Redis高手修炼之路】Redis的持久化——ROB和AOF持久化机制

  5. redis分片_Redis的持久化操作

    走过路过不要错过 点击蓝字关注我们 1.Redis持久化策略 1.1 什么是持久化 说明:Redis运行环境在内存中,如果redis服务器关闭,则内存数据将会丢失. 需求: 如何保存内存数据呢? 解决 ...

  6. Redis哨兵主备切换的数据丢失及Redis数据持久化

    一 两种数据丢失的情况 异步复制导致数据丢失 master->slave复制数据是异步的,可能有部分数据还没复制到slave,master就宕机了,此时导致数据丢失 集群脑裂导致数据丢失 mas ...

  7. Redis数据持久化(详解+样例)

    一.实验目的 1.了解 Redis 数据库的持久化机制 2.直接使用 Redis 进行持久化操作 3.Docker 下 Redis 的持久化操作 二.Redis持久化 2.1 什么是持久化 关系型数据 ...

  8. Redis持久化 - RDB和AOF

    一.持久化的作用 1. 什么是持久化 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘). 持久化Redis所有数据保持在内存中,对数据的更新将异步地保 ...

  9. redis 配置文件 append only file(aof)部分---数据持久化

    ############################## 仅追加方式 ############################### #默认情况下Redis会异步的将数据导出到磁盘上.这种模式对许 ...

最新文章

  1. 模型大小 与参数量计算
  2. 形态形成场(矩阵乘法优化dp)
  3. aaynctask控制多个下载进度_C# 多线程方法 控制两个进度条
  4. mysql操作语句now_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!
  5. ASP.NET Core Razor 视图组件
  6. influxdb mysql对比_InfluxDB和MySQL的读写对比测试
  7. Windows一键设置JAVA环境变量
  8. 聊聊eureka的preferSameZoneEureka参数 1
  9. 【“新智认知”杯上海大学联赛】E-CSL的魔法(序列b到序列b‘需要的数据交换次数)
  10. 阿里云云计算 32 PolarDB的概念
  11. 实现真正的「人机」对战:引入三方 AI 引擎
  12. 阿里矢量图可根据样式修改颜色
  13. 如何理解概率论中的“矩”?
  14. nodejs--process
  15. jquery展开收起(手风琴)
  16. 第九届广东省大学生程序设计竞赛排名
  17. 28python成功输出腾讯位置大数据北京地区迁出数据
  18. 【MySQL】MyCAT三大配置文件详解(MySQL专栏启动)
  19. 华章1-2月份新书简介(2017年)
  20. Matlab谐波搭建

热门文章

  1. 2018年终特辑:美通社TOP20最受媒体与公众关注新闻稿
  2. vue.js 默认选中select_vue select二级联动第二级默认选中第一个option值的实例
  3. 04_51入门_数码管
  4. 微信小程序开发入门教程(十一)
  5. css+html实现倒三角
  6. FreeCAD-01软件下载安装
  7. 神经网络常用激活函数及其应用举例
  8. xml在u3d的使用[u3d_rpg游戏开发之物品管理(四)]
  9. 客户端负载均衡与服务端负载均衡
  10. ap计算机科学课程内容,AP课程之“计算机科学原理”介绍