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开发与运维》的学习笔记。内容大部分摘自此书。 众所周知,redis是内存数据库,它把数据存储在内...
    大数据Zone阅读 578评论 0 3
  • 前言 在上一篇文章中,介绍了Redis内存模型,从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化、复...
    Java架构阅读 2,362评论 3 21
  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    空语阅读 1,612评论 0 2
  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    胸毛飘逸阅读 262评论 0 2
  • 从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化、复制(及读写分离)、哨兵、以及集群。 本文将先说明...
    不变甄心阅读 710评论 0 4