0.9、Redis学习-持久化策略-只追加文件(AOF)模式

本文深入探讨Redis的两种数据持久化方法:快照(RDB)和只追加文件(AOF)。阐述了它们的工作原理,如何配置及优缺点。特别关注AOF的三种追加策略,以及解决aof文件过大的策略。

前言

体能状态先于精神状态,习惯先于决心,聚焦先于喜好。

Redis的持久化

作为非关系型数据库,Redis的一大优势就是支持数据持久化,这样就不会
像Memcache一样,一旦重启,内存中保存的数据就完全消失了。
那么 Redis 的持久化机制是怎样的呢?这正是本文所介绍的内容。

快照(RDB)和只追加文件(AOF)

Redis 提供了两种持久化方式:
快照:按照约定规则,在某一刻将所有数据备份到硬盘。
AOF:append-only file,只追加文件,在Redis执行命令时,将执行的写命令复
制到硬盘里面。

Redis 持久化的自由搭配

Redis 允许你不使用持久化功能,也允许你搭配使用 快照和AOF 中的一种或两种。
默认情况下,Redis 使用快照持久化-你可以从 redis.conf 中 SNAPSHOTTING 关键字查看具体内容。
如果你同时使用了 AOF和RDB,那么在重启Redis的时候,Redis会用 AOF 的文件进行恢复工作。

AOF (append-only file)持久化

append-only file

AOF 是Redis 备份的另外一种方式,该方式不同于快照方法存储整个内存的内容,而是将Redis执行的命令保存到一个文件中——append only file,将命令追加到文件末尾。

aof 文件追加的三种方式

根据何时将操作命令写入磁盘aof文件的尾部,Redis提供了三种aof追加方式
默认配置是:everysec,即每隔一秒追加一次

no:由操作系统决定何时写入

命令行会先被存储到缓存中,至于什么时候写入磁盘文件,依赖于操作系统
有可能造成部分缓存没有被写入文件中,从而造成数据丢失
这种方式是最快的

always:同步追加

可以将命令设置为每一次执行Redis命令都将命令行直接写入磁盘的文件中
这样会极大的降低Redis的性能——但是可以保证aof文件总是记录了完整的操作命令
频繁写入会降低磁盘的寿命,对于固态硬盘尤其注意避免这种配置

everysec:每秒追加一次

每隔一秒,将缓存中的命令行追加到 aof文件末尾
是一种折中方案
该方案是Redis默认配置

相关配置

位于 redis.conf

# appendfsync always
appendfsync everysec
# appendfsync no
aof 文件过大的问题

aof 不断在文件末尾增加命令会造成这个文件无限的增加,这样在重启Redis或者以之在另一台机器复制Redis时,在启动阶段会耗费相当长的时间-并且早起的命令行的数据可能已经不存在了,没必要再写一次。
Redis 提供了自动 resize 和手动 resize 两种方式进行 aof 文件的缩小工作

手动触发

通过命令行 BGREWRITEAOF ,该命令行会创建一个子进程,将aof中过期的命令去除,这同样会有性能问题和内存占用问题——参考 快照模式中的BGSAVE命令

BGREWRITEAOF 
自动触发

在 redis.conf 文件中,Redis 提供了自动对 aof 文件进行缩减的配置
当本次aof文件大小超过 64mb 并且比上次重写之后的体积大100%时,自动触发 BGREWRITEAOF 命令

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
开启 AOF

默认情况下,Redis 并没有开启 AOF。
配置位置为 redis.conf

############################## APPEND ONLY MODE ###############################
appendonly no

默认的AOF文件名称为appendonly.aof

# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值