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中涉及到。