专栏首页Java学习录Redis 的持久化机制

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),作者:Java学习录

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于注解的SpringAOP源码解析(一)

    本文会分析Spring的AOP模块的整体流程,分析过程需要使用一个简单的demo工程来启动Spring,demo工程我以备好,需要的童鞋自行在下方链接下载:

    Java学习录
  • GitHub中文文档发布了

    作为一个程序员,如果说不会用GitHub那就真的有点尴尬了。不过呢,纯英文的GitHub确实给不少人童鞋带来了不少麻烦。

    Java学习录
  • 使用SpringBoot2.0.3整合SpringCloud

    在刚刚新建的父项目下新增一个项目cloud-demo-provider,引入web依赖。

    Java学习录
  • Redis持久化的原理及优化

    Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。

    全菜工程师小辉
  • Redis持久化

    Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大. 如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式. 你也可以同...

    会跳舞的机器人
  • 深入理解Redis持久化Redis 持久化

    本文翻译自官方文档 http://redis.io/topics/persistence 。

    desperate633
  • Redis初识~持久化数据

    用户2196435
  • Redis持久化(Persistence):了解如何配置redis的持久化。

    在默认情况下, Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中。你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改...

    须臾之余
  • 【玩转Redis面试第3讲】一次性将Redis RDB持久化和AOF持久化讲透

    持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁...

    爱笑的架构师
  • Redis持久化机制详解

    张申傲

扫码关注云+社区

领取腾讯云代金券