zoukankan      html  css  js  c++  java
  • 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中涉及到。


  • 相关阅读:
    数字音频接口
    xargs命令详解,xargs与管道的区别
    RmNet,CDC-ECM ,NDIS,RNDIS区别
    Python并发编程之多进程(理论)
    网络编程
    type和object
    《流畅的python》读书笔记,第一章:python数据模型
    用 做出进度条
    如何使用特殊方法
    ValueError: too many values to unpack (expected 2)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5181446.html
Copyright © 2011-2022 走看看