文章目录加载中

Redis数据持久化:AOF

# 什么是 AOF 持久化?

场景:当使用 Redis 存储非临时数据时,一般需要打开 AOF 持久化来降低进程中止导致的数据丢失。这类场景对数据完整性要求较高

具体实现:AOF 在每次执行命令后将命令本身记录下来(写操作相关的命令),之后按照命令重新执行一遍,就能恢复数据。

# 如何使用 AOF?

默认 redis 不开启,可以通过 appendonly 参数启用:appendonly yes

AOF 文件的保存位置和 RDB 文件的位置相同,默认是:appendonly.aof

# 如何优化 AOF?

# AOF 重写机制

如果命令过多,AOF 文件中内容就会过多。比如对一个键的值连续修改多次,实际上生效的只有最后一次。

那么 AOF 文件中,只保留最后一条命令即可。可以通过修改配置文件来实现,这个操作就是:AOF 的重写。

# 同步执行写入

事实上,由于操作系统的缓存机制,在默认情况下系统每 30 秒会执行一次同步操作,以便将硬盘缓存中的内容真正地写入硬盘,在这 30 秒的过程中如果系统异常退出则会导致硬盘缓存中的数据丢失。

如果在写入 AOF 文件时,发生了此种丢失,就会造成数据丢失或错乱。

默认情况下 Redis 采用 everysec 规则,即每秒执行一次同步操作。always 表示每次执行写入都会执行同步,这是最安全也是最慢的方式。no 表示不主动进行同步操作,而是完全交由操作系统来做(即每 30 秒一次),这是最快但最不安全的方式。

通过参数配置开启:

# appendfsync always
appendfsync everysec
# appendfsync no
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog