Redis持久化之AOF(Append Only File)_appendonly.aof_散_风的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_45009521/article/details/121926625 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Redis持久化之AOF(Append Only File)_appendonly.aof_散_风的博客-CSDN博客
Redis持久化之AOF(Append Only File)
最新推荐文章于 2022-09-18 09:10:05 发布
散_风
最新推荐文章于 2022-09-18 09:10:05 发布
403
收藏
分类专栏:
Redis
文章标签:
redis
缓存
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45009521/article/details/121926625
版权
Redis
专栏收录该内容
17 篇文章
0 订阅
订阅专栏
1、AOF(Append Only File)是什么
以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
2、AOF持久化流程 
(1)客户端的请求写命令会被append追加到AOF缓冲区内;
(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;
(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;
(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的
 3、默认关闭,在redis.conf中可以开启
文件名默认为 appendonly.aof      AOF文件的保存路径,同RDB的路径一致。
AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)
 AOF文件损坏,通过redis-check-aof--fix appendonly.aof进行恢复
4、AOF同步频率设置
appendfsync always
始终同步,每次Redis的写入都会立刻记入日志;性能较差但数据完整性比较好
appendfsync everysec
每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能丢失。
appendfsync no
redis不主动进行同步,把同步时机交给操作系统。
5、Rewrite压缩
5.1、Rewrite是什么
当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩, 只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof
5.2、重写原理
AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),redis4.0版本后的重写,是指上就是把rdb 的快照,以二级制的形式附在新的aof头部,作为已有的历史数据,替换掉原来的流水账操作。
no-appendfsync-on-rewrite:
如果 no-appendfsync-on-rewrite=yes ,不写入aof文件只写入缓存,用户请求不会阻塞,但是在这段时间如果宕机会丢失这段时间的缓存数据。(降低数据安全性,提高性能)
如果 no-appendfsync-on-rewrite=no,  还是会把数据往磁盘里刷,但是遇到重写操作,可能会发生阻塞。(数据安全,但是性能降低)
触发机制,何时重写
Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发
重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写。
auto-aof-rewrite-percentage:设置重写的基准值,文件达到100%时开始重写(文件是原来重写后文件的2倍时触发)
auto-aof-rewrite-min-size:设置重写的基准值,最小文件64MB。达到这个值开始重写。
例如:文件达到70MB开始重写,降到50MB,下次什么时候开始重写?100MB
系统载入时或者上次重写完毕时,Redis会记录此时AOF大小,设为base_size,
如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小>=64mb(默认)的情况下,Redis会对AOF进行重写
5.3、重写流程
(1)bgrewriteaof触发重写,判断是否当前有bgsave或bgrewriteaof在运行,如果有,则等待该命令结束后再继续执行。
(2)主进程fork出子进程执行重写操作,保证主进程不会阻塞。
(3)子进程遍历redis内存中数据到临时文件,客户端的写请求同时写入aof_buf缓冲区和aof_rewrite_buf重写缓冲区保证原AOF文件完整以及新AOF文件生成期间的新的数据修改动作不会丢失。
(4)1).子进程写完新的AOF文件后,向主进程发信号,父进程更新统计信息。2).主进程把aof_rewrite_buf中的数据写入到新的AOF文件。
(5)使用新的AOF文件覆盖旧的AOF文件,完成AOF重写。
6、优势
备份机制更稳健,丢失数据概率更低。
可读的日志文本,通过操作AOF稳健,可以处理误操作。
7、劣势
比起RDB占用更多的磁盘空间。
恢复备份速度要慢。
每次读写都同步的话,有一定的性能压力。
存在个别Bug,造成不能恢复。
8、使用建议 
RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.同时开启两种持久化方式在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据, 因为在通常情况 下AOF文件保存的数据集要比RDB文件保存的数据集要完整.RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份), 快速重启,而且不会有AOF可能潜在的bug,留着作为一个万一的手段。性能建议
因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。 如果使用AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。 代价,一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。 只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。 默认超过原大小100%大小时重写可以改到适当的数值。
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
散_风
关注
关注
点赞
收藏
觉得还不错?
一键收藏
打赏
知道了
评论
Redis持久化之AOF(Append Only File)
1、AOF(Append Only File)是什么以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作2、AOF持久化流程(1)客户端的请求写命令会被append追加到AOF缓冲区内;(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同.
复制链接
扫一扫
专栏目录
Redis持久化一一AOF
01-07
AOF(Append Only File):以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
Aof保存的是appendonly.aof文件
AOF启动/修复/恢复:
正常恢复:启动:修改appendonly为yes;将有数据的aof文件复制一份保存到对应目录(config get dir);恢复:重启redis然后重新加载
异常恢复:修复:使用Redis-check-aof进行修复;恢复:重
【Redis 系列】redis 学习八,redis 持久化 RDB 和 AOF
m0_37322399的博客
03-17
1017
Redis 持久化
redis 是内存数据库,如果不将内存中数据库保存到磁盘上,那么服务器一旦宕机,或者 redis 进程退出,不仅数据会被丢失,服务器中的数据库状态也会被丢失
因此 redis 提供了持久化的功能
redis 的持久化分为 RDB 和 AOF
RDB (Redis DatabBase)
在主从复制中,rdb文件都作为备用的,放在从机上面
在指定时间间隔内将内存中的数据集快照写入到磁盘中,这就是快照 snapshot ,恢复快照的时候,是把快照文件读入到内存中。
redis 通过 fork
参与评论
您还未登录,请先
登录
后发表或查看评论
Redis持久化中的AOF(Append Only File)持久化
xzy的博客
03-16
6514
文章目录Redis持久化中的AOF(Append Only File)持久化开启aof持久化aof持久化的时候appendonly.aof持久化文件是什么时候生成的?appendonly.aof文件中的数据是什么时候怎样恢复到redis数据库中的?怎样把appendonly.aof持久化文件里面的数据恢复到redis数据库中?使用redis-check-aof工具校验appendonly.aof持久化文件中的内容aof持久化的时候缓存中的内容同步到硬盘的三种方式在什么情况下redis数据库中写的命令可以追加
Redis持久化--AOF
WhataNerd的博客
08-06
138
Redis的数据持久化方式有 RDB 和 AOF 两种,这篇文章将会讲解 AOF
AOF是什么
AOF(Append Only File)以日志形式记录服务器收到的每一个写操作
AOF怎么进行持久化
使用AOF默认会在当前目录下生成一个 appendonly.aof 日志文件
在恢复数据时,AOF会将appendonly.aof中记录下的所有写操作重新按顺序执行一遍
以下是appendonly.a...
AOF持久化以及数据恢复
qq_39794062的博客
05-14
649
一、Append Only FIle
AOF以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来,读操作不记录,只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据。换言之redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
二、配置的位置
在redis.conf配置文件中开启appendonly,默认为no
AOF保存的是appendonly.aof文件
重新启动redis会生成appendonly.aof文件
appendonly.
Redis持久化之AOF找不到appendonly.aof文件
S903784597的博客
06-10
2696
在redis中,AOF持久化会默认在/usr/local/bin/ 目录下生成名字为appendonly.aof的持久化文件,AOF模式是默认不开启的。需要手动修改redis.conf 配置文件 。将appendonly配置项的值修改为yes才能开启。开启之后必须重启reids-server服务器。如果使用的是redis7以及以上版本,在bin目录下我们找不到appendonly.aof文件。这是因为在redis7中关于AOF持久化有一个更新操作。AOF持久化不再是以单独的文件存在,而是生成一个append
阿里二面:Redis 中的 AOF 文件太大了怎么办?
riemann_的博客
06-03
4957
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
一、前言
写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题。不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF。但老周这里盲猜面试的过程肯定也是先从持久化方式问起,然后循循渐进的问到 AOF 文件太大了怎么办?本着知其然知其所以然的态度,老周这里会带你从 RDB 和 AOF 的实现原理、各自的触发方.
redis默认读取appendonly.aof文件
mhbsoft的博客
12-15
1414
dump.rdb 与 appendonly.aof 同时存在的情况下,默认优先读取appendonly.aof文件。如果appendonly.aof有错误,则启动会失败。
vim appendonly.aof
*2
$6
SELECT
$1
...
v3
dfsdfsdfsdfsdfsd;;;;;;;;sdfsdf;;;;;;;sd;f;;; // 乱加的
启动失败:
[mhbtest@root redis-5.0.4]$ src/redis-server redis_aof.conf
19838:
清理linux日志的命令
凉云半的博客
09-08
2902
echo > out.log
echo "" > out.log
cat /dev/null > out.log
使用echo ''>out.log,遇到过新生成的日志使用less命令出现乱码的情况,
提示:XXX may be a binary file. See it anyway?
使用export LESSCHARSET=utf-8 ,不起作用
使用下面的命令就能恢复了
echo "abc">out.log
...
appendonly.aof 在哪里
雷震子的博客
12-16
2139
背景:
系统deepin20,redis4.0.9。想查看 appendonly.aof 文件,redis.conf设置为正常,但是死活找不到文件,网上搜了一大堆,都是复制粘贴。
解决办法:
find / -name appendonly.aof,发现文件在根目录~。修改 redis.conf,指定文件目录和文件名。
dir "/usr/local/redis/bin"
appendonly.aof "appendonly.aof"
...
Redis 持久化之RDB和AOF.doc
10-09
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示...
Redis两种持久化方案RDB和AOF详解
09-09
主要介绍了Redis 两种持久化方案,RDB(Redis DataBase)和 AOF(Append Only File),给大家提供参考,一起学习下。
内存型数据库Redis持久化小结
09-09
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式,二是Append-only file(缩写aof)的方式,三是虚拟...
[redis 源码走读] aof 持久化 (上)
wenfh2020的专栏
04-05
163
aof (Append Only File) 是 redis 持久化的其中一种方式。
服务器接收的每个写入操作命令,都会追加记录到 aof 文件末尾,当服务器重新启动时,记录的命令会重新载入到服务器内存还原数据。这一章我们走读一下源码,看看 aof 持久化的数据结构和应用场景是怎样的。
主要源码逻辑在 aof.c 文件中。
此博客将逐步迁移到作者新的博客,可以点击此处进入。
文章目录开启 a...
redis的持久化——AOF(Append Only File)
小志的博客
08-13
444
一、AOF是什么
以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
二、AOF保存的是什么
AOF保存的是appendonly.aof文件
三、AOF的配置位置
573 ############...
Redis两种持久化机制RDB和AOF详解(面试常问,工作常用)
大JAVA解决方案
02-26
585
原创Java的架构师技术栈2020-01-03 16:22:40
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。
在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本...
Redis配置数据持久化---APPEND ONLY MODE
热门推荐
梁吉林的博客
04-01
5万+
Redis可以实现数据的持久化存储,即将数据保存到磁盘上。
Redis的持久化存储提供两种方式:RDB与AOF。AOF是默认配置。
现在Redis的配置中默认是关闭存储持久化的。
如果要开启持久化,修改Redis的配置文件redis.conf。相关的配置项:appendonly yes #开启持久化 原文1
appendfilename "appendonly.aof" #保存数据的文件名称
【Redis 实战】dump.rdb、appendonly.aof 文件路径
持之以恒
09-18
3234
本文是实战性文章,带大家一起找找 `dump.rdb` 和 `apendonly.aof` 文件的路径。
redis 服务在启动时有两种方式,既可以指定配置文件,也可以不指定配置文件。
redis持久化之AOF(Append Only File)及其总结
zzy7075的专栏
07-14
448
1.是什么?
以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
2.Aof保存的是appendonly.aof文件
3.开启AOF的配置位置
4.AOP启动、修复、恢复
①正常恢复
启动:设置yes,修改默认的appendonly no,改为yes
将有数据的aof文件复制一份保存到..
redis持久化AOF
最新发布
07-27
Redis提供了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。在这里,我将解释一下AOF持久化。
AOF持久化是通过将所有修改Redis数据库的命令追加到一个文件(Append Only File)中来实现的。当Redis重新启动时,它会读取该文件并重新执行其中的命令,以恢复数据库状态。
AOF持久化有三种不同的策略可供选择:
1. `always`:每个写命令都被立即写入AOF文件中。这是最慢但最安全的策略,因为每个写操作都会被持久化,数据完整性高。
2. `everysec`:每秒钟将写命令写入AOF文件中一次。这是推荐的默认策略,它在性能和数据完整性之间取得了一个很好的平衡。
3. `no`:完全依赖操作系统来进行文件同步。这是最快但最不安全的策略,因为可能会导致数据丢失。
要启用AOF持久化,你可以在Redis配置文件中设置`appendonly yes`。还可以通过设置`appendfsync`配置项来选择不同的同步策略。
希望这个解释对你有帮助!如果你还有其他问题,请随时提问。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
散_风
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
50
原创
44万+
周排名
16万+
总排名
2万+
访问
等级
514
积分
粉丝
获赞
11
评论
收藏
私信
关注
试试用AI创作助手写篇关于[redis...]、[缓存]的文章吧
用AI写文章
热门文章
seata-server-1.5.2的环境搭建
1607
全局唯一性ID生成(雪花算法)
1606
Nginx的原理解析
1397
Nginx的安装与启动
1393
Redis(主从复制-读写分离)
1232
分类专栏
Docker
4篇
Mybatis-Plus
3篇
SpringCloud Alibaba
5篇
数据库
1篇
Java SE基础
3篇
Shiro
2篇
Redis
17篇
Nginx
8篇
Linux
2篇
SpringBoot笔记
2篇
最新评论
本地镜像发布到阿里云
散_风:
好的 六月份开始恢复更新
本地镜像发布到阿里云
小阿_州:
博主好久没更新了,求更
seata-server-1.4.2的环境搭建
学习吧黑黑:
您好,可以分享一下压缩包吗
Docker中的容器命令
小阿_州:
good paper!i crash on you
Mybatis-Plus中的条件查询-DQL编程
小阿_州:
我也是,求更
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
本地镜像发布到阿里云
Docker中的容器命令
Docker中的镜像命令
2023年6篇
2022年11篇
2021年34篇
目录
目录
分类专栏
Docker
4篇
Mybatis-Plus
3篇
SpringCloud Alibaba
5篇
数据库
1篇
Java SE基础
3篇
Shiro
2篇
Redis
17篇
Nginx
8篇
Linux
2篇
SpringBoot笔记
2篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
散_风
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值