美文网首页
Redis持久化

Redis持久化

作者: spiderM | 来源:发表于2018-12-07 17:28 被阅读0次

    一、持久化的作用

    redis所有的数据都存在内存中,对数据的更新将异步地保存到磁盘上。
    1.什么是持久化?
    数据从内存保存到磁盘的过程叫做持久化。
    2.持久化的方式

    • 快照 MySQL Dump、Redis RDB
    • 写日志 MySQL Binlog、Redis AOF

    二、RDB

    是Redis内存到硬盘的快照,用于持久化


    RDB

    RDB触发机制
    1.save命令
    client执行save命令,redis就会生成一个RDB文件默认叫dump.rdb(以旧换新的策略)。是一个同步命令,会阻塞客户端命令
    2.bgsave命令
    client执行bgsave命令,会交给后台子进程执行(fork),不会阻塞Redis但是fork新进程

    save与bgsave的比较

    3.自动生成RDB

    4.其他方式

    • 全量复制
    • debug reload
    • shutdown

    RDB存在的问题
    1.O(n):耗时
    2.fork():消耗内存,copy-on-write策略(写的时候先把文件拷贝一份,往拷贝的文件里写,然后再引用这个副本)
    3.DiskI/O:IO消耗
    4.当出现宕机的情况导致文件没有写完

    三、AOF

    运行原理

    AOF运行原理-创建

    当发生宕机之后,通过AOF文件进行完整的恢复

    AOF的三种策略
    Redis写文件首先是将内容写到缓冲区中,然后根据不同的策略刷新至磁盘中。
    1.always:每一条命令刷新一次
    2.everysc:每一秒刷新一次
    3.no:操作系统决定

    四、RDB和AOF的抉择

    image.png

    相关文章

      网友评论

          本文标题:Redis持久化

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