美文网首页
Redis持久化之RDB

Redis持久化之RDB

作者: 叫我胖虎大人 | 来源:发表于2020-03-06 21:38 被阅读0次

    Redis持久化之RDB

    RDB (快照)持久化:保存某个时间点的全量数据快照。

    在配置文件中进行配置

    save 900 1
    save 300 10
    save 60 10000
    
    stop-writes-on-bgsave-error yes  # 当备份进程出错的时候就停止主进程写入数据
    
    rdbcompression yes    # RDB备份文件是否开启压缩,建议为no,redis本身就是CPU密集型进程
    

    以save 900 1为例,意思是在900s内,出现1一条数据变动就进行一次RDB备份。


    Redis的持久化方式

    ➢ SAVE :阻塞Redis的服务器进程,直到RDB文件被创建完毕
    ➢ BGSAVE : Fork出一-个子进程来创建RDB文件,不阻塞服务器进程

    自动化触发RDB持久化的方式

    • 根据redis.conf配置里的SAVE m n定时触发(用的是BGSAVE )
    • 主从复制时BGSAVE,主节点自动触发
    • 执行Debug Reload
    • 执行SHUTDOWN的时候没有开启AOF持久化

    BGSAVE原理

    BGSAVE原理

    系统调用fork() :创建进程,实现了Copy-on-Write

    Copy-on-Write
    如果有多个调用者同时要求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本给该调用者,而其他调用者所见到的最初的资源仍然保持不变


    使用RDB持久化的缺点

    • 内存数据的全量同步, 数据量大会由于I/O而严重影响性能
    • 可能会因为Redis挂掉而丢失从当前至最近一-次快照期间的数据

    相关文章

      网友评论

          本文标题:Redis持久化之RDB

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