Redis中AOF相关的配置项

2022-02-18 18:06:31 浏览数 (1)

有关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()是主线程执行的,所以主线程会被阻塞)。

  1. yes:进行BGSAVE / BGREWRITEAOF时,新数据执行AOF操作时不会进行fsync(),数据暂存于内存中,等待BGSAVE或BGREWRITEAOF结束后进行刷盘;
  2. no:进行BGSAVE / BGREWRITEAOF时,新数据执行AOF操作时也会进行fsync(),默认为no;
  • 如果应用对延时要求比较高,建议设置为yes,降低阻塞时间;(Linux的默认fsync策略是30秒,这种情况可能丢失30秒数据)
  • 如果应用对安全要求比较高,建议设置为no, 防止数据丢失;

代码语言:javascript复制
auto-aof-rewrite-percentage 100 # 触发重写百分比 (如果设置为0,将禁用AOF自动重写功能)
auto-aof-rewrite-min-size 64mb  # 触发自动重写的最低文件体积(小于64MB不自动重写)

作用:触发AOF重写的条件,达到条件时Redis会自动隐式调用 BGREWRITEAOF命令进行重写;

  1. auto-aof-rewrite-percentage = 0,关闭AOF自动重写功能;
  2. 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文件出现末尾截断,这时是继续加载文件还是报错退出

  1. yes :末尾被截断的 AOF 文件将会被加载,并打印日志通知用户;
  2. no :服务器将报错并拒绝启动;(可以通过使用redis-check-aof 工具修复AOF文件,然后再重新启动)

代码语言:javascript复制
aof-use-rdb-preamble  yes/no   #redis4 新增功能,默认是no

作用:开启混合持久化;(具体功能可以搜索相关文章学习)

代码语言:javascript复制
aof-timestamp-enabled no/yes

作用:Redis支持在AOF中记录时间戳注释,以支持从一个特定的时间点恢复数据。然而,使用这种能力会改变AOF的格式,可能与现有的AOF解析器不兼容。

0 人点赞