Redis的AOF功能

引言:  Redis是基于内存的数据库。同一时候也提供了若干持久化的方案。同意用户把内存中的数据,写入本地文件系统。以备下次重新启动或者当机之后继续使用。本文将描写叙述怎样基于Redis来设置AOF功能


什么是Redis的AOF?

AOF是AppendOnly File的缩写,是Redis系统提供了一种记录Redis操作的持久化方案。在AOF生成的文件里。将忠实记录发生在Redis的操作,从而达到在Redisserver重新启动或者当机之后,继续恢复之前数据状态的机制。


下面我们来简要看看怎样在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

   

C. 打开redis-cli,操作数据

   

D.  查看aof文件

  

从上面的图示中,能够发现,在AOF的文件里。它忠实记录了发生在Redis上的操作,从而达到了还原数据的目的。当然,这个方式并非一种效率非常高的方式。基本的问题在于,有可能对于部分数据,进行了大量的操作。

在这样的情况下就必须产生大量的冗余操作记录。针对这个问题的解决的方法。我将在兴许的blog中涉及到。


posted @ 2016-02-04 13:55  blfshiye  阅读(5233)  评论(1编辑  收藏  举报