zoukankan      html  css  js  c++  java
  • redis之持久化总结

    RDB

    • rdbSave 会将数据库数据保存到 RDB 文件,并在保存完成之前阻塞调用者。

    • SAVE 命令直接调用 rdbSave ,阻塞 Redis 主进程; BGSAVE 用子进程调用 rdbSave ,主进程仍可继续处理命令请求。

    • SAVE 执行期间, AOF 写入可以在后台线程进行, BGREWRITEAOF 可以在子进程进行,所以这三种操作可以同时进行。

    • 为了避免产生竞争条件, BGSAVE 执行时, SAVE 命令不能执行。

    • 为了避免性能问题, BGSAVE 和 BGREWRITEAOF 不能同时执行。

    • 调用 rdbLoad 函数载入 RDB 文件时,不能进行任何和数据库相关的操作,不过订阅与发布方面的命令可以正常执行,因为它们和数据库不相关联。

    • RDB 文件的组织方式如下:

      +-------+-------------+-----------+-----------------+-----+-----------+
      | REDIS | RDB-VERSION | SELECT-DB | KEY-VALUE-PAIRS | EOF | CHECK-SUM |
      +-------+-------------+-----------+-----------------+-----+-----------+
       
                            |<-------- DB-DATA ---------->|
    • 键值对在 RDB 文件中的组织方式如下:

      +----------------------+---------------+-----+-------+
      | OPTIONAL-EXPIRE-TIME | TYPE-OF-VALUE | KEY | VALUE |
      +----------------------+---------------+-----+-------+

      RDB 文件使用不同的格式来保存不同类型的值。

     

    AOF

    • AOF 文件通过保存所有修改数据库的命令来记录数据库的状态。
    • AOF 文件中的所有命令都以 Redis 通讯协议的格式保存。
    • 不同的 AOF 保存模式对数据的安全性、以及 Redis 的性能有很大的影响。
    • AOF 重写的目的是用更小的体积来保存数据库状态,整个重写过程基本上不影响 Redis 主进程处理命令请求。
    • AOF 重写是一个有歧义的名字,实际的重写工作是针对数据库的当前值来进行的,程序既不读写、也不使用原有的 AOF 文件。
    • AOF 可以由用户手动触发,也可以由服务器自动触发。
     
     
     
     

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">


    文章源自微信公众号【刍荛采葑菲】,转载请注明。

  • 相关阅读:
    [转载]Android之NetworkOnMainThreadException异常
    Android学习笔记(一): Fragment(一) 基本概念和生命周期
    ubuntu 64位系统创建android 项目找不到R文件
    Cocos2d之“引用计数”内存管理机制实现解析
    Cocos2d之Ref类与内存管理使用详解
    JSON之HelloWord
    Mysql之HelloWorld
    Linux inittab 配置文件
    计算机端口号对应服务总结
    perl文件读写
  • 原文地址:https://www.cnblogs.com/churao/p/8509712.html
Copyright © 2011-2022 走看看