关注我

    我的微信
在线咨询 x
在线咨询
有什么可以帮到你
点击咨询

Redis 持久化 —— AOF 持久化方式

简介Append-only File(AOF),Redis 每次接收到一条改变数据的命令时,它将把该命令写到一个 AOF 文件中(只记录写操作,读操作不记录),当 Redis 重启时,它通过执行 AOF 文件中所有的命令来恢复数据。

一、持久化概述


持久化可以理解为存储,就是将数据存储到一个不会丢失的地方,如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化

Redis 的数据存储在内存中,内存是瞬时的,如果 linux 宕机或重启,又或者 Redis 崩溃或重启,所有的内存数据都会丢失,为解决这个问题,Redis 提供两种机制(RDB 方式 和 AOF 方式)对数据进行持久化存储,便于发生故障后能迅速恢复数据。


二、什么是 AOF 方式


Append-only File(AOF),Redis 每次接收到一条改变数据的命令时,它将把该命令写到一个 AOF 文件中(只记录写操作,读操作不记录),当 Redis 重启时,它通过执行 AOF 文件中所有的命令来恢复数据。


三、如何实现


AOF 方式的数据持久化,仅需在 redis.conf 文件中配置即可

配置项:

①:appendonly:默认是 no,改成 yes 即开启了 aof 持久化

②:appendfilename:指定 AOF 文件名,默认文件名为 appendonly.aof

③:dir :指定 RDB 和 AOF 文件存放的目录,默认是 ./ 

④:appendfsync:配置向 aof 文件写命令数据的策略:

no:不主动进行同步操作,而是完全交由操作系统来做(即每 30 秒一次),比较快但不是很安全。

always:每次执行写入都会执行同步,慢一些但是比较安全。

everysec:每秒执行一次同步操作,比较平衡,介于速度和安全之间。这是默认项。

⑤:auto-aof-rewrite-min-size:允许重写的最小 AOF 文件大小,默认是 64M 。当 aof 文件大于 64M 时,开始整理 aof 文件,去掉无用的操作命令。缩小 aop 文件。


例 1:

①:停止运行的 redis ,备份要修改的 redis.conf

②:查看 redis 安装目录/src 下有无 .aof 文件。默认是在 redis 的当前目录

Redis 持久化 AOF方式.png


③:编辑 redis.conf 

设置 appendonly 为 yes 即可。

查看 appendfsync 的当前策略。

查看 appendfilename 的文件名称

Redis 持久化 AOF方式.png


Redis 持久化 AOF方式.png


④:在 redis 客户端执行写入命令

Redis 持久化 AOF方式.png


⑤:查看 aof 文件


Redis 持久化 AOF方式.png


Redis 持久化 AOF方式.png


四、总结


1)append-only 文件是另一个可以提供完全数据保障的方案;

2)AOF 文件会在操作过程中变得越来越大。比如,如果你做一百次加法计算,最后你只会在数据库里面得到最终的数值,但是在你的 AOF 里面会存在 100 次记录,其中 99 条记录对最终的结果是无用的;但 Redis 支持在不影响服务的前提下在后台重构 AOF 文件,让文件得以整理变小 ;

3)可以同时使用这 RDB 和 AOF 两种方式,redis 默认优先加载 AOF 文件(AOF 数据最完整);