zoukankan      html  css  js  c++  java
  • Redis(二)持久化

    Redis持久化,分为RDB方式和AOF方式,它们可以单独使用,也可以混用。Redis默认的是使用RDB方式。

    一、RDB方式

    1.触发快照的方式

    RDB方式是在指定时间间隔内某一时间点的数据集快照。以下几种情况会触发快照。

    (1)根据配置规则,进行自动快照。

    看配置文件:

    86-88行,这三行就是配置文件中默认设置的规则。通过看文档中的注释就可以理解其中含义,在规定时间内,发生一定次数的变化,就会进行快照。三种情况任意一种满足,都会进行快照。

    在97行和107行,是快照的保存路径和文件名称,当然,可以也可以自己指定。

    (2)执行SAVE,BGSAVE命令

    save命令:Redis同步进行快照操作,期间会阻塞所有客户端的请求,当数据库数据较多时,应避免使用这个命令。

    bgsave命令:从名字可以猜测到,这个命令是在后台异步进行,并且同时可以处理客户端的请求。

    (3)执行复制(replication)

     当设置了主从模式时,在复制初始化时自动进行快照。

    2.RDB持久化过程

    (1)Redis使用fork()函数,复制一份当前进程的副本;

    (2)父进程继续处理客户端的请求,子进程开始将内存中的数据写入硬盘中的临时文件;

    (3)当子进程写完所有数据后,用临时文件,替换旧的数据文件,至此,一次快照完成。

    注意:fork()函数操作时,那一刻的数据,将会被存储,fork()之后快照完成前,那一时间的数据将会丢失。

    二、AOF方式

    1.AOF使用

    Redis存储非临时的数据时,一般要打开AOF来降低进程终止导致的数据丢失。它可以将每条命令记录下来,写进AOF文件里。

    默认AOF是关闭的,将262行的 no变成yes,就可以了。默认的文件名见265行。

    2.AOF文件重写

    重写意思是,删除文件中无用的行为。比如set name lee 分别将不同的值进行设置,但是前面设置的值肯定被覆盖,只有最后一次设置的值有效。

    配置文件中对重写功能的设置:

    最后两行的设置。328行,如果新文件大小比原文件大100%时,进行重写。最后一行,文件大小必须达到64mb时,才会重写。

    两个关系必须同时满足,才可以重写。

    三、RDF与AOF的比较

    这里推荐一篇博客了,有兴趣的朋友可以看看。

    https://my.oschina.net/davehe/blog/174662

  • 相关阅读:
    ubuntu安装后做得几件事情 【robby_chan】
    malloc函数的一种简单的原理性实现[转]
    了解B树 B+树
    win下格式转为utf8 编码 转码
    log4j2与slf4j日志桥接
    java获取当前行数
    java获取服务器ip地址解决linux上为127.0.0.1的问题
    log4j2的基本使用
    navicator使用之mysql
    log4j与log4j2日志文件的操作
  • 原文地址:https://www.cnblogs.com/lihao007/p/7884438.html
Copyright © 2011-2022 走看看