redis的持久化(RDB与AOF)未完待续

时间:2019-09-22
本文章向大家介绍redis的持久化(RDB与AOF)未完待续,主要包括redis的持久化(RDB与AOF)未完待续使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、为什么redis要实现持久化?

避免因宕机、断电等场景导致进程退出后数据丢失,如果redis的数据都只存放于内存,那么进程退出后数据就丢失了。持久化机制可以持久化内存数据到硬盘,重启redis后基于持久化数据进行恢复。

2、redis持久化的方式有哪些

2.1 RDB,定时对进程数据拍摄快照存储到硬盘的持久化方式

2.1.1如何触发RDB持久化?

2.1.1.1手动触发

1.【不推荐】Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。$\color{red}{此命令会阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。}$
命令如下

redis 127.0.0.1:6379> SAVE 
OK

2.【推荐】为了解决SAVE命令对redis实例的阻塞问题,redis提供另一个命令:BGSAVE。
Redis BGSAVE 命令用于在后台异步保存当前数据库的数据到磁盘。

$\color{red}{BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。}$
命令如下:

redis> BGSAVE
Background saving started

显然BGSAVE 命令是针对SAVE阻塞问题做的优化。因此Redis内部所有的涉
及RDB的操作都采用BGSAVE 的方式,而SAVE命令已经废弃。

2.1.1.2 自动触发

REDIS在以下场景会自动触发RDB落盘:

  • 使用save相关配置,如“save m n”。表示m秒内数据集存在n次修改
    时,自动触发bgsave。
  • 如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点,更多细节见6.3节介绍的复制原理。
  • 执行debug reload命令重新加载Redis时,也会自动触发save操作。
  • 默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则
    自动执行bgsave。

2.1.2 BGSAVE处理流程


1.执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进
程,如RDB/AOF子进程,如果存在bgsave命令直接返回。

2.父进程执行fork操作创建子进程,fork操作过程中父进程会阻塞,通
过info stats命令查看latest_fork_usec选项,可以获取最近一个fork操作的耗
时,单位为微秒。

3.父进程fork完成后,bgsave命令返回“Background saving started”信息
并不再阻塞父进程,可以继续响应其他命令。

4.子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后
对原有文件进行原子替换。执行lastsave命令可以获取最后一次生成RDB的
时间,对应info统计的rdb_last_save_time选项。

5.进程发送信号给父进程表示完成,父进程更新统计信息,具体见
info Persistence下的rdb_*相关选项。

2.1.3 RDB日志文件在哪?

保存在dir参数指定的目录下。
改变RDB日志文件存储目录命令:

config set dir {newDir}

改变RDB日志文件名命令:

config set dbfilename {newFileName}

$\color{red}{当遇到坏盘或磁盘写满等情况时,可以通过config set dir{newDir}在线
修改文件路径到可用的磁盘路径,之后执行bgsave进行磁盘切换,同样适用
于AOF持久化文件}$
$\color{red}{Redis默认采用LZF算法对生成的RDB文件做压缩处理,压缩后的
文件远远小于内存大小,默认开启,可以通过参数config set rdbcompression{yes|no}动态修改。}$
$\color{red}{虽然压缩RDB会消耗CPU,但可大幅降低文件的体积,方便保存到硬盘
或通过网络发送给从节点,因此线上建议开启。}$

2.2 AOF,基于日志文件记录写命令日志的高实时性持久化方式

3.两种持久化方式的优劣对比

原文地址:https://www.cnblogs.com/powerjiajun/p/11569460.html