zoukankan      html  css  js  c++  java
  • 第五章:Redis持久化-RDB持久化

    Redis持久哈分为RDB和AOF两种方式,持久化功能能有效避免因进程退出造成的数据丢失问题。下次重启时可以利用之前持久化的文件即可实现数据恢复;
     
    RDB持久化
    把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化分为手动和自动触发;
    触发机制
    • 手动触发分别对应save和bgsave命令:
    1. save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存较大的实例会造成长时间的阻塞,线上不建议使用,save命令对应的日志是:DB saved on disk.
    2. bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。
    • 自动触发
    1. 在redis.conf配置文件中使用save相关配置,例如save m n,表示m秒内数据集存在n次修改时,自动触发bgsave;
    2. 如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点;
    3. 执行debug reload命令重新加载redsi时,也会自动触发save操作;
    4. 默认情况下执行shutdown命令,如果没有开启AOF持久化功能则自动执行bgsave;
    RDB文件的处理
    • 保存:RDB文件默认保存在dir配置指定的目录下,通过dbfilename配置执定;
    • 压缩:Redis默认采用LZF算法对生成的RDB文件进行压缩处理,默认开启,可以通过参数config set rdbcompression {yes|no}动态设置;注意:压缩会消耗CPU、但可以大幅降低文件的体积,方便保存,因此建议线上开启;
    • 校验:如果Redis加载损坏的RDB文件时拒绝启动,并打印日志:short read or oom loading DB. unrecoverable error,aborting now;
    RDB的优缺点
    优点
    • RDB时一个紧凑的二进制文件,适合备份和全量复制等场景。
    • Redis加载RDB恢复数据速度远远快于AOF方式
    缺点
    • RDB方式数据没办法做大实时持久化/秒级持久化,因为bgsave要fork进程,执行成本高
    • RDB文件使用特定二进制格式保存,无法兼容不同版本的Redis。
    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    Zookeeper java API
    Zookeeper 安装与配置
    Zookeeper 架构
    HBase 优化
    HBase 与 MapReduce 整合
    Hbase protobuf Java API
    HBase数据库设计
    Fork/Join并发处理框架
    并发容器Map
    Redis缓存穿透、缓存击穿和雪崩
  • 原文地址:https://www.cnblogs.com/use-D/p/10766039.html
Copyright © 2011-2022 走看看