appendfsync:这个参数项是AOF功能最重要的设置项之一,主要用于设置“正真执行”操作命令向AOF文件中同步的策略。什么叫“正真执行”呢?还记得我们在本专题中介绍的Linux操作系统对磁盘设备的操作方式吗? 为了保证操作系统中I/O队列的操作效率,应用程序提交的I/O操作请求一般是被放置在Linux Page Cache中的,然后再由Linux操作系统中的策略自行决定正在写到磁盘上的时机。而Redis中有一个fsync()函数,可以将Page Cache中待写的数据真正写入到物理设备上,而缺点是频繁调用这个fsync()函数干预操作系统的既定策略,可能导致I/O卡顿的现象频繁 。如果您想继续了解操作系统上的工作的块存储技术,可以参看笔者另外几篇文章《》
appendfsync参数项可以设置三个值,分别是:always、everysec、no,默认的值为everysec。
always参数值,会使得AOF对数据的保存非常稳健。其设置意义是只要有一个写操作命令执行成功,就执行一次fsync函数调用。所以很显然always的设定值,就是三个选项值中处理效率最慢的。
no参数值,这个设置值表示Redis不会将执行成功的操作命令正真刷入AOF文件,而是完成操作系统级别的写操作后就认为AOF文件记录成功了,后续的I/O操作完全依赖于操作系统的设定,一般30秒会刷一次。
everysec参数值,这是默认的设置值,也是可以在数据稳健性和性能上平衡较好策略。它表示每秒钟都做一次fsync函数调用,正真做AOF文件的写入操作。
来源: http://www.bubuko.com/infodetail-1870105.html