美文网首页
redis持久化

redis持久化

作者: 木驴的天空 | 来源:发表于2018-05-12 23:35 被阅读21次

    为了保障数据的安全,redis支持两种持久化方式将数据持久化至硬盘:快照和AOF。

    快照持久化

    快照(snapshotting),它可以将某一时间点所有数据写入硬盘。创建快照后,用户可以备份快照到其他服务器,也可以用恢复数据。如果服务器崩溃,redis将丢失最近一次创建快照之后所有写入的数据。
    可以通过配置,也可以通过命令触发:

    • save阻塞式创建快照,不常用。
    • bgsave导致redis fork一个子进程负责将快照写入硬盘,父进程则继续处理请求。

    如果redis内存达几十GB时,bgsave创建子进程耗时会比较长,可能会导致系统长时间地停顿,也可能导致swap。

    AOF持久化

    只追加文件(append-only file,AOF),它会在执行写命令时,将被执行的写命令写入硬盘。
    appendfsync支持三种值:

    • always,每次redis写命令都同步写入硬盘,这样会严重降低redis速度,同时也会降低磁盘的寿命。
    • everysec,默认值,每秒执行一次同步,显示地将多个命令写入硬盘。
    • no,让操作系统来决定何时同步。

    通常默认值是比较合理的选项,即便是系统发生崩溃也只会丢失一秒之内产生的数据。AOF持久化将丢失数据的时间窗口降低至1秒(甚至不丢失任何数据),又可以在极短的时间内完成持久化。
    AOF在不断增长的情况下,体积会不断增大,redis支持压缩(重写)AOF文件,使AOF文件体积尽可能小。重写会删除旧的AOF,生成新的AOF。

    配置

    # 快照持久化选项
    save 60 1000  //从上一次创建快照起,60s内,有1000次写入触发bgsave(不是save)
    stop-writes-on-bgsave-error no //创建快照失败后是否仍然执行写命令
    rdbcompression yes   //是否对快照压缩
    dbfilename dump.rdb //快照文件名
    
    # aof持久化选项
    appendonly no   //是否开启aof
    appendfsync everysec   //持久化周期
    no-appendsync-on-rewirte no  //aof自动执行开关
    auto-aof-rewrite-percentage 100 //压缩条件
    auto-aof-rewrite-min-size 64mb //压缩条件
    
    dir ./   //保存位置
    

    相关文章

      网友评论

          本文标题:redis持久化

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