Redis 的持久化机制

本文涉及:Redis的全量备份方式RDB和增量备份方式AOF的相关内容

全量备份RDB

RDB持久化触发方式

触发RDB持久化的过程分为手动触发和自动触发两种方式

手动触发:

  • ·save命令:阻塞当前Redis服务器,直到RDB过程完成为止,除非是没有任何服务在使用此redis,否则千万不要使用此命令进行备份
  • bgsave命令:Redis进程执行fork操作创建子进程,由子进程负责持久化,这个生产环境是可以使用的。

自动触发:

  • 从节点执行全量复制操作时,主节点自动执行bgsave生成RDB文件并发送给从节点
  • 执行debug reload命令重新加载Redis时,也会自动触发bgsave操
  • 默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave。

RDB持久化文件

RDB文件默认保存在配置文件中dir属性(./)指定的目录下,以dbfilename(dump.rdb)属性指定的文件名命名

Redis默认采用LZF算法对生成的RDB文件做压缩处理。取消压缩处理可以按照如下方式修改配置

rdbcompression no

增量备份AOF

AOF持久化文件

AOF持久化默认不开启,按照如下方式修改配置可开启AOF持久化

appendonly yes

RDB文件默认保存在配置文件中dir属性(./)指定的目录下,以appendfilename(appendonly.aof)属性指定的文件名命名

AOF文件同步策略

Redis提供了多种AOF缓冲区同步文件策略,由参数appendfsync控制:

  • always,每次写入都要同步AOF文件。Redis本身是纯内存操作,你要是每次写入都要写磁盘那就没有任何意义了
  • no,将同步操作交由操作系统负责,操作系统保证30秒内进行。同步时间不确定,则数据安全也无法让人放心
  • everysec,默认配置,每秒进行一次,生产环境通常都是使用此配置

AOF重写机制

AOF文件记录的是Redis中所有的写操作,例如:

set key1 1 \n set key2 2 \n set key3 3 \n

随着命令不断写入AOF,文件会越来越大。而此时AOF文件中存在很多待优化及无效的数据就需要使用重写机制进行处理。例如:

set key1 1 setkey1 2 setkey1 3 就可以优化成setkey1 3set key2 2 set key2 3 del key2 就可以把所有关于key2的删除掉lpush key 1 lpush key 2 lpush key 2 就可以优化为 lpush key 1 2 3

AOF重写机制触发方式

  • ·手动触发:直接调用bgrewriteaof命令
  • 自动触发:根据auto-aof-rewrite-min-size(运行AOF重写时文件最小体积,默认64MB)和auto-aof-rewrite-percentage(当前AOF文件空间和上一次重写后AOF文件空间的比值)参数确定自动触发时机

Redis数据恢复

Redis启动时是按照如下流程来恢复数据的

原文发布于微信公众号 - Java学习录(Javaxuexilu)

原文发表时间:2019-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券