您好,欢迎访问一九零五行业门户网

Redis的AOF功能

引言: redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用。本文将描述如何基于redis来设置aof功能 什么是redis的aof? aof是appendonly file的缩写,是redis系统提供了
引言: redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用。本文将描述如何基于redis来设置aof功能
什么是redis的aof?
aof是appendonly file的缩写,是redis系统提供了一种记录redis操作的持久化方案,在aof生成的文件中,将忠实记录发生在redis的操作,从而达到在redis服务器重启或者当机之后,继续恢复之前数据状态的机制。
以下我们来简要看看如何在redis中使用aof,并验证整个过程:
a. redis中主要的aof设置
appendonly yes ---- 打开aof设置,同时将快照功能置于低优先级的位置
appendfsync no
当设置appendfsync为no的时候,redis不会主动调用fsync去将aof日志内容同步到磁盘,所以这一切就完全依赖于操作系统的调试了。对大多数linux操作系统,是每30秒进行一次fsync,将缓冲区中的数据写到磁盘上。
appendfsync everysec
当设置appendfsync为everysec的时候,redis会默认每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘。但是当这一次的fsync调用时长超过1秒时。redis会采取延迟fsync的策略,再等一秒钟。也就是在两秒后再进行fsync,这一次的fsync就不管会执行多 长时间都会进行。这时候由于在fsync时文件描述符会被阻塞,所以当前的写操作就会阻塞。
结论就是,在绝大多数情况下,redis会每隔一秒进行一 次fsync。在最坏的情况下,两秒钟会进行一次fsync操作。这一操作在大多数数据库系统中被称为group commit,就是组合多次写操作的数据,一次性将日志写到磁盘。
appendfsync always
置appendfsync为always时,每一次写操作都会调用一次fsync,这时数据是最安全的,当然,由于每次都会执行fsync,
所以其性能也会受到影响。
b. 启动redis-server
喎?http://www.2cto.com/kf/ware/vc/ target=_blank class=keylink>vcd4kpha+qy4gtpk/qnjlzglzlwnsaaosstnx98r9vt08l3a+cjxwpiagica8aw1nihnyyz0=http://www.2cto.com/uploadfile/collfiles/20140522/2014052209120528.jpg alt=\>
d. 查看aof文件
从上面的图示中,可以发现,在aof的文件中,它忠实记录了发生在redis上的操作,从而达到了还原数据的目的。当然,这个方式并不是一种效率很高的方式。主要的问题在于,有可能对于部分数据,进行了大量的操作。在这种情况下就必须产生大量的冗余操作记录。针对这个问题的解决办法,我将在后续的blog中涉及到。
其它类似信息

推荐信息