美文网首页大数据技术分享
Redis 持久化方式——RDB

Redis 持久化方式——RDB

作者: code_solve | 来源:发表于2020-01-16 11:35 被阅读0次

    RDB

    RDB是什么?

    Redis持久化数据的两种方式之一,
    另外一种是AOF。
    Redis会定期保存数据快照至一个rbd文件中,
    并在启动时自动加载rdb文件,
    恢复之前保存的数据。

    RDB 触发时机

    • 手动触发
      可以通过SAVE或者BGSAVE进行RDB备份

      • SAVE
        直接调用 rdbSave ,
        阻塞 Redis 主进程,
        直到保存完成为止。
        在主进程阻塞期间,
        服务器不能处理客户端的任何请求。
      • BGSAVE
        fork 出一个子进程,
        子进程负责调用 rdbSave ,
        并在保存完成之后向主进程发送信号,
        通知保存已完成。
        Redis 服务器在BGSAVE 执行期间,
        仍然可以继续处理客户端的请求。
    • 自动触发
      可以在Redis的配置文件中进行设置,
      以达到满足条件自动触发RDB备份。

      • 配置方式
        在配置文件中加上save 60 1000
        则表示 60秒内如果数据变更达到1000次,
        则满足触发RDB备份的条件。
        配置方式可以加入多条,
        满足任意条件,
        则触发RDB备份
    • 其他可能
      主从复制的时候
      因为要复制给从节点最新信息,
      所以也会触发

    使用 shutdown 指令正常下线之前
    也会触发一次

    RDB的优缺点

    • 优点
      1. 对性能影响最小,
        Redis在保存RDB快照时会fork出子进程进行,
        几乎不影响Redis处理客户端请求的效率。

      2. 恢复数据的速度快,
        相对于AOF,具有更快的数据恢复速度。

      3. 适合数据库容灾备份,
        生产的RDB文件可以移动到一些高可靠的文件系统,
        比如HDFS。

    • 缺点
      1. 不适合频繁触发备份,
        所以没有备份的数据在宕机的时候会丢失。

      2. Redis如果存储的数据体量太大,
        Fork子进程的时候会影响到Redis的可用性

      3. 二进制文件,
        无法人工读懂,
        不能直接进行人工干预。

    与其说优缺点,
    我们其实不如思考适用场景,
    没有完美的技术,
    只要用到合适的场景,
    他就是对的。

    RDB文件生产过程

    1. Redis fork 一个子进程

    2. 子进程将数据写入一个临时的RDB文件

    3. 当子进程完成对临时的RDB文件的写入,
      将完成的RDB文件来覆盖 旧的RDB文件

    这样就完成了一次RDB的备份,
    并且不会因为备份失败而影响到之前的备份数据。

    相关文章

      网友评论

        本文标题:Redis 持久化方式——RDB

        本文链接:https://www.haomeiwen.com/subject/ciluxctx.html