之前在安装和部署Redis的时候总会看见AOF持久化这个功能选项,不知道是做什么的,今天有时间就简单聊聊,要弄清楚Redis的AOF持久化功能是做什么的,以及是否应该开启它。然后还要了解appendfsync的选项always、everysec和no之间的区别以及如何选择。首先,Redis有两种持久化方式,对吧?一种是RDB,另一种是AOF。RDB是快照,定时保存数据,而AOF可能记录每个写操作,这样恢复的时候可以重放这些操作。这样在发生故障时,AOF可能提供更好的数据持久性,因为每次操作都记录下来了,不像RDB可能会丢失最后一次快照之后的数据。那AOF具体是怎么工作的呢?

聊聊Redis的AOF持久化功能是做什么的,是否开启 第1张

AOF持久化

全称是Append Only File,所以应该是追加写入的方式。每次执行一个写命令,就会把这个命令追加到AOF文件的末尾。这样当Redis重启时,可以通过重新执行AOF文件中的命令来恢复数据。这样的话,AOF文件会越来越大,可能需要进行压缩或者重写,比如AOF重写机制,这个我记得是Redis通过fork一个子进程来重写AOF,生成一个更紧凑的文件,只保留恢复当前数据集所需的最小命令集合。

针对AOF是啥?举个栗子

想象你有一个记账本,每次花钱都记一笔(比如“买奶茶-18元”)。AOF就像这个记账本,专门记录Redis收到的所有写操作(比如新增、修改、删除数据)。

Redis重启时,会翻出这个记账本,把上面的操作重新做一遍,数据就恢复啦!
(而另一种RDB持久化,相当于定时拍张数据“照片”,可能丢数据)

是否开启AOF

默认没开! Redis默认用RDB快照(类似定时拍照),但AOF更安全。开不开取决于你的需求:

开AOF:

  • 适合不能丢数据的场景(比如订单、余额)。

  • 代价:AOF文件体积大,恢复数据慢一丢丢。

不开AOF:

  • 适合能容忍丢数据的场景(比如缓存、点赞数)。

  • 代价:服务器突然宕机,可能丢几分钟的数据。

普通建议:重要数据可以同时开启RDB和AOF(Redis 4.0+支持混合持久化),既安全又能快速恢复。

appendfsync三种模式

这个配置相当于问你:每次记账后,多久把记账本存到硬盘?

聊聊Redis的AOF持久化功能是做什么的,是否开启 第2张

通俗解释:

always模式:

  • 适合:钱不能丢(比如银行转账)。

  • 缺点:每操作一次就存盘,频繁存盘会卡。

everysec模式(推荐):

  • 适合:大部分场景(比如电商订单)。

  • 缺点:极端情况可能丢1秒数据(但概率极低)。

no模式:

  • 适合:数据丢了无所谓(比如短视频点赞数)。

  • 缺点:服务器宕机可能丢几十秒数据。

怎么选?

保命配置:appendonly yes + appendfsync everysec(90%场景选它)

超级怕丢数据:appendfsync always(但准备好承受性能损耗)

纯当缓存用:直接关AOF,用默认RDB就行!

口诀:AOF像记账本,always最稳但慢,everysec省心够用,no模式心要大!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。