redis 的持久化

RDB持久化

redis的RDB持久话把当前进程数据生成快照(.rdb)文件保存到硬盘的过程。有手动和和自动两种触发方式。
save命令:阻塞当前redis,直到RDB持久化过程完成为止,若内存实力比较大会造成长时间阻塞。
bgsave命令:redis进程执行fork操作创建子线程,由子线程完成持久化,阻塞时间很短(微秒级),在执行redis-cli shutdown关闭redis服务时,如果没开AOF持久化自动执行bgsave.

bgsave执行流程:

image.png

RDB文件的操作

命令: config set dir /usr/local  //设置rdb文件保存路径
备份 : bgsave
恢复:将生成的dump.rdb文件放到redis 安装目录与redis.conf同级重启redis

RDB文件的优缺点

优点:

  1. 压缩后的二进制文件适用于备份,全量复制,灾难恢复
  2. RDB的恢复速度快于AOF方式

缺点:

  1. 无法做到实时持久化每次都要创建子进程,频繁操作成本过高
  2. 备份后的rdb文件会存在老版本不兼容新版本rdb文件的问题

AOF持久化

AOF持久化流程:
  1. 所有的写入命令会append追加到aof_buf缓冲区中
  2. AOF缓冲去向硬盘做sync同步
  3. AOF文件越来越大,还需要定时对AOF文件rewrite重写达到压缩
  4. 当redis服务重启时,可load加载AOF文件进行恢复。
AOF相关配置:
appendonly yes     //启用aof持久化方式
appendfsync always //每收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec //每秒强制写入磁盘一次,性能和持久化方面做了折中,推荐
auto-aof-rewrite-percentage 100  //aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb   //aof文件,至少超过64M时,重写

你可能感兴趣的:(redis 的持久化)