有关Redis
中配置文件的解释,我们可以看文档:redis/redis.conf at unstable · redis/redis · GitHub
下面我将介绍几个有关AOF的相关配置:
1.基本配置项
代码语言:javascript复制1.appendonly no/yes #关闭/开启AOF功能
2.appendfilename "appendonly.aof" #AOF写入数据的文件名
3.appenddirname "appendonlydir" #AOF写入数据的路径名,一般不会这个选项进行配置,这样使得AOF文件在默认实例的路径下
4.appendfsync always/everysec/no #AOF刷盘策略(每次/每秒/由操作系统自行判断)
2.高级配置项:
代码语言:javascript复制no-appendfsync-on-rewrite no/yes
作用:进行AOF重写或写入RDB文件时(bgsave),会产生大量磁盘IO读写操作。这时如果appendfsync配置为always / everysec,执行fsync()就可能导致Redis主线程阻塞(always / everysec会进行刷盘操作,但是磁盘IO已经被大量使用,而fsync()是主线程执行的,所以主线程会被阻塞)。
-
yes
:进行BGSAVE / BGREWRITEAOF时,新数据执行AOF操作时不会进行fsync(),数据暂存于内存中,等待BGSAVE或BGREWRITEAOF结束后进行刷盘; -
no
:进行BGSAVE / BGREWRITEAOF时,新数据执行AOF操作时也会进行fsync(),默认为no;
- 如果应用对延时要求比较高,建议设置为yes,降低阻塞时间;(Linux的默认fsync策略是30秒,这种情况可能丢失30秒数据)
- 如果应用对安全要求比较高,建议设置为no, 防止数据丢失;
auto-aof-rewrite-percentage 100 # 触发重写百分比 (如果设置为0,将禁用AOF自动重写功能)
auto-aof-rewrite-min-size 64mb # 触发自动重写的最低文件体积(小于64MB不自动重写)
作用:触发AOF重写的条件,达到条件时Redis会自动隐式调用 BGREWRITEAOF
命令进行重写;
- 当auto-aof-rewrite-percentage = 0,关闭AOF自动重写功能;
- 当auto-aof-rewrite-min-size = 64 mb ,如果AOF文件小于64mb,即使满足auto-aof-rewrite-percentage增长比例,也不会触发AOF自动重写;
过程:Redis会使用上一次AOF重写完成后的文件大小作为基准,如果启动后没有发生过重写,则使用启动时的AOF文件大小作为基准,如果当前AOF文件大小与基准文件大小的增长比例大于auto-aof-rewrite-percentage时,则触发AOF自动重写功能;
代码语言:javascript复制aof-load-truncated yes/no
作用:当Redis启动时,发现AOF文件出现末尾截断,这时是继续加载文件还是报错退出
yes
:末尾被截断的 AOF 文件将会被加载,并打印日志通知用户;no
:服务器将报错并拒绝启动;(可以通过使用redis-check-aof
工具修复AOF文件,然后再重新启动)
aof-use-rdb-preamble yes/no #redis4 新增功能,默认是no
作用:开启混合持久化;(具体功能可以搜索相关文章学习)
代码语言:javascript复制aof-timestamp-enabled no/yes
作用:Redis支持在AOF中记录时间戳注释,以支持从一个特定的时间点恢复数据。然而,使用这种能力会改变AOF的格式,可能与现有的AOF解析器不兼容。