redis持久化之AOF

2 篇文章 0 订阅
2 篇文章 0 订阅

redis持久化之AOF

之前其实介绍过redis另一种持久化方式rdb了,这里我讲述一下我所了解的AOF方式
原理:aof是通过日志的形式,将所有的写操作记录下来。注意只记录写操作,不会去记录读操作。重启之后,会读取文件重新构建数据。他的构建过程,是根据日志将所有的指令全部执行一次完成数据恢复。默认保存的文件是appendonly.aof文件

AOF也是在配置文件里面开启(可以搜索appendonly 找到配置的地方)
在这里插入图片描述
将no改为yes 默认文件名字建议不要改

在这里插入图片描述
这个也是触发aof的一个机制
always 是每次数据变化都会记录下来,并同步到磁盘
everysec 是每秒记录,并同步到磁盘
no,写入aof文件,不会同步

下面我实际操作一下,截图解释一下
在这里插入图片描述
有些人开启了之后可能会找不到aof文件,这时候执行一个命令他就会出现啦
redis-cli set config appendonly yes
在这里插入图片描述
下面随便输入几个值看一下
在这里插入图片描述
此时查看aof文件的话就会发现里面已经有记录了
在这里插入图片描述
这时候进去我们手动清空关闭一下redis
flushall shutdown

之后我们重启redis 查看一下数据有没有恢复!
在这里插入图片描述
会发现数据并没有恢复!!!!!!!
查看appendonly.aof文件看一下
在这里插入图片描述
发现最后有一个flushall也记录下来了,直接删掉就行了在运行就好了
同理推测。。就是文件里有其他不是写操作的数据的时候会加载失败,但是他会有一个check-appendonly.aof文件自己恢复的,还挺人性化
在这里插入图片描述
所以AOF对比RDB优势在于 同步持久化,他有每秒和每次同步
但是AOF文件远远大于RDB文件,恢复速度慢,运行效率也相对慢

但是这个问题redis也有相应的解决办法 rewrite
他其实是增加了重写机制,当文件超过所定的阀值的时候,redis就会启动aof文件的内容压缩,只保留可以恢复数据的最小指令集,命令是bgrewriteaof
原理:fork一个新的进程将文件重写(跟rdb一样也是先写临时文件,在rename),遍历新进程的内存中的数据,每条记录都有一个set,将内存中的数据库内容用命令的方式重写一个新的aof文件。
触发机制:会记录上次的重写的aof文件大小,默认配置是当aof文件大小是上次rewrite后大小的一倍,且文件大于64M的时候触发
不过注意(公司里肯定不可能是64M 一般都是好几个G)

这次关于aof的介绍完了,希望对大家有所帮助。
如果大家有想了解的,也可以评论,我会更新给大家看。
谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值