• redis 持久化 ——RDB



    RDB

    redis database 的简写 ;

    在指定时间间隔后,将内存中的数据集快照写入数据库 ;在恢复时候,直接读取快照文件,进行数据的恢复 ;

    在进行 RDB 的时候,redis 的主线程是不会做 io 操作的,主线程会 fork 一个子线程来完成该操作;

    子线程在操作的时候,会先将数据写进临时文件中,等到内存中所有的数据都写进临时文件中以后,才会进行文件的替换,用该临时文件替换掉上一次的持久化文件 ;

    从子线程的工作方式,我们也可以看出,最后一次持久化操作以后的数据面临着丢失的风险 ;


    关于 fork

    fork 作用是复制,复制当前线程的一个副本,副本是什么概念,复制品的意思,也就是说,主线程的数据,都会被 copy 来,这样就导致一个问题,每次进行 RDB 的时候,其实内存中是有两份数据的,这个需要考虑到 ;


    dump.rdb 文件

    RDB 方式保存的文件是 dump.rdb 文件 ;

    在配置文件中进行配置,不再累赘,前一篇 redis 配置文件 的博客,已经讲了


    如何触发 RDB 快照

    1. 使用 save 命令,会立刻对当前内存中的数据进行持久化 ,但是会阻塞,也就是不接受其他操作了;
    2. flushall 命令也会触发持久化 ;
    3. 满足配置条件中的触发条件 ;
    4. bgsave 是异步进行,进行持久化的时候,redis 还可以将继续响应客户端请求 ;
    5. 重新启动 redis ,也会触发,记进行加载持久化文件 ;

    可以通过 lastsave 获取上一次 save 的时间 ;


    如何恢复

    将备份文件放在 redis 的安装目录,然后启动 redis 即可 ;


    优势

    1. 适合大规模文件的备份,速度比较快 ;
    2. 对数据的完整性和一致性要求不高
    3. 在备份的时候,是子线程在操作,不需要 redis 的主线程进行 IO 操作,不会影响性能;

    劣势

    1. fork 对内存占用 ;
    2. 最后一次持久化以后的数据存在丢失的风险 ;

    停掉 RDB

    在配置文件中,配置 save ""即可 ;

  • 相关阅读:
    1. 马尔科夫决策过程
    梯度下降法、随机梯度下降法、小批量梯度下降法
    计算曲线与坐标轴的面积
    鼠标进入,显示div
    codewar
    Django firstDay
    C#学习之关于lock
    winfrom 界面中表格数据修改及刷新(DEV)
    SVN 分支合并 版本控制
    wpf 绑定非元素对象
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665619.html
Copyright © 2020-2023  润新知