zoukankan      html  css  js  c++  java
  • RDB和AOF的区别

    一、二者的区别

    RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

     

    AOF持久化以日志的形式记录服务器所处理的每一个写操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

    二、持久化配置

    1. RDB持久化配置

    Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:

    1. save 900 1              #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
    2. save 300 10            #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
    3. save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

    2. AOF持久化配置

    在Redis的配置文件中存在三种同步方式,它们分别是:

    1. appendfsync always     #每次有数据修改发生时都会写入AOF文件。
    2. appendfsync everysec  #每秒钟同步一次,该策略为AOF的缺省策略。
    3. appendfsync no          #从不同步。高效但是数据不会被持久化。

    三、RDB和AOF的选择

    1. RDB持久化方式能够在指定的时间间隔内对你的数据进行快照存储
    2. AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以Redis 协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。
    3. 只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化
    4. 同时开启两种持久化方式,在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。dump.rdb 的数据不实时,同时使用两者时服务器重启也只会找AOF文件,那要不要
    5. 只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的Bug,留着作为一个万一的手段。

    性能建议

    • RDB文件只用作备份用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。
    • Enable AOF(appendfsync everysec),好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只加载自己的AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,默认超过原大小100%大小重写可以改到适当的数值。
    • 不使用 AOF,仅靠Master-Slave Repllcation(主从复制)实现高可用性也可以,能省掉一大笔IO,也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时挂掉(断电),会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave 中的 RDB文件,载入较新的那个,微博就是这种架构。

    四、参考博客:

    rdb和aof的区别(持久化详解) - 卡卡罗特琪琪 - 博客园 (cnblogs.com)

    Redis面试题总结(超详细)_是阿超-CSDN博客

  • 相关阅读:
    noi 2011 noi嘉年华 动态规划
    最小乘积生成树
    noi 2009 二叉查找树 动态规划
    noi 2010 超级钢琴 划分树
    noi 2011 阿狸的打字机 AC自动机
    noi 2009 变换序列 贪心
    poj 3659 Cell Phone Network 动态规划
    noi 2010 航空管制 贪心
    IDEA14下配置SVN
    在SpringMVC框架下建立Web项目时web.xml到底该写些什么呢?
  • 原文地址:https://www.cnblogs.com/isalo/p/15545473.html
Copyright © 2011-2022 走看看