Redis持久化,Redis持久化是如何完成,如何使用Redis持久化,RDB快照式和AOF日志式两种持久化方式

本文深入探讨Redis的持久化机制,包括RDB快照式存储和AOF日志式存储。RDB通过bgsave命令实现数据持久化,适合全量备份,但实时性较差。AOF日志记录每次操作,保证数据实时性,支持三种同步策略,文件重写以减少体积。Redis在重启时优先加载AOF文件。
摘要由CSDN通过智能技术生成

目录

一、redis的简单介绍

二、redis持久化

1.RDB快照式存储

1.1 如何使用RDB持久化

1.2 bgsave的持久化流程

1.3 RDB文件处理相关

1.4 RDB的优缺点

2.AOF日志式存储

2.1 如何使用AOF持久化

2.2 AOF的工作流程

2.3 AOF命令写入相关

2.4 AOF文件同步策略(缓冲区同步硬盘)

2.5 AOF重写机制

2.6 AOF重启加载

2.7 文件校验

补充

1.info Persistence统计信息相关

2.LZF算法对生成的RDB文件做压缩处理


一、redis的简单介绍

Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、 hash(哈希)、list(列表)、set(集合)、zset(有序集合)、 Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会 将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样 在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。

这次我们来看一下redis的持久化存储

二、redis持久化

Redis支持RDB和AOF两种持久化机制,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,通过持久化文件进行数据的恢复;

1.RDB快照式存储

1.1 如何使用RDB持久化

  •   手动触发:save和bgsave命令

1)save命令:执行该命令时redis服务器阻塞,直到RDB过程完成,阻塞时间很长

2)bgsave命令:save命令的优化,执行fork操作创建子线程,RDB过程交给子进程执行,阻塞只发生在fork阶段,阻塞时间很短

Redis内部所有 的涉及RDB的操作都采用bgsave的方式

  •   自动触发:

1)配置redis.conf文件  save m n   m秒内数据有n次修改 就会自动触发bgsave

2)节点执行全量复制操作,主节点自动执行bgsave生成 RDB文件并发送给从节点

3)执行debug reload命令重新加载Redis时,也会自动触发save操 作

4)执行shutdown命令时,如果没有开启AOF持久化功 能则自动执行bgsave

1.2 bgsave的持久化流程

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

2)执行fork操作创建子进程,fork操作过程中父进程会阻塞

3)fork完成后,bgsave命令返回“Background saving started”父进程不再阻塞,继续响应其他命令

4)子进程创建RDB文件,根据父进程内存生成临时快照文件,对原有文件进行原子替换

5)子进程发送信号给父进程表示完成,父进程更新统计信息

1.3 RDB文件处理相关

RDB文件保存:

通过修改redis.conf配置文件

dir 配置项指定保存目录

dbfilename 配置项指定文件名

坏盘或磁盘写满等情况,可以通过config set dir{newDir} 动态在线修改文件路径,config set dbfilename{newFileName}运行期动态执行指定文件名,当下次运行时RDB文件会保存到新目录

RDB文件压缩:

采用LZF算法对生成的RDB文件做压缩处理,默认开启,压缩后的文件远远小于内存大小

可以通过参数config set rdbcompression{yes|no}动态修改

压缩RDB会消耗CPU,但可以大幅降低文件的体积,建议开启

数据恢复常见运维问题:

如果Redis加载损坏的RDB文件时拒绝启动,并打印日志

# Short rea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等到鸡吃完米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值