zoukankan      html  css  js  c++  java
  • 【赵强老师】Redis的RDB持久化

    Redis 提供了多种不同级别的持久化方式:

    • RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
    • AOF (Append-only file)持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
    • Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
    • 你甚至可以关闭持久化功能,让数据只在服务器运行时存在。

    一、RDB的持久化

    工作原理:每隔一定时间给内存照一个快照,将内存中的数据写入文件(rdb文件)。这是Redis默认的持久化方式。当redis生成dump.rdb文件时,工作过程如下:

    • 当达到RDB生成条件时,redis主进程fork一个子进程
    • fork出来的子进程将内存的数据集dump到临时的RDB中
    • 当子进程对临时的RDB文件写入完毕,redis用新的RDB文件代替旧的RDB文件

    配置参数如下:

    RDB示例测试:可以使用redis-benchmark进行压力测试,观察RDB文件大小的变化。

    bin/redis-benchmark -n 100000  表示执行100000个操作
    

    二、RDB的缺点:

    在两次快照之间,如果发生断电,数据会丢失。举例:在生成rdb后,插入新值。突然断电,数据可能会丢失。

    三、监控RDB:

    Redis监控最直接的方法当然就是使用系统提供的 info 命令来做了,只需要执行下面一条命令,就能获得 Redis 系统的状态报告。

    bin/redis-cli info | grep rdb_
    
    • rdb_changes_since_last_save 表明上次RDB保存以后改变的key次数
    • rdb_bgsave_in_progress 表示当前是否在进行bgsave操作,1表示正在进行;0表示没有进行
    • rdb_last_save_time 上次保存RDB文件的时间戳
    • rdb_last_bgsave_time_sec 上次保存的耗时
    • rdb_last_bgsave_status 上次保存的状态
    • rdb_current_bgsave_time_sec 目前保存RDB文件已花费的时间

  • 相关阅读:
    怎么解决input中readonly属性的iOS一直存在光标问题
    点击图片播放视频
    h5上传图片
    添加和删除节点
    阻止事件冒泡
    四分之一圆border-radius的用法
    【记录一个问题】libtask无法在android下编译通过
    【记录一个问题】云风的协程库 c conroutine无法在android下链接通过
    【记录一个问题】macos下lldb调试opencv的一个程序,出现“failed to load objfile for”错误,并且无法调试进入opencv的函数
    【测试数据】android下CPU核与线程数的关系
  • 原文地址:https://www.cnblogs.com/collen7788/p/13468455.html
Copyright © 2011-2022 走看看