Redis——5、持久化RDB和AOF

一、Redis持久化的两种方法:

RDB(Redis DataBase Backup file)Redis数据备份文件 与AOF(Append Only File)追加文件

二、RDB

1、介绍

RDB 简单来说就是将物理内存中的数据快照写入磁盘中,当Redis实例宕机时,从磁盘读取RDB文件来恢复数据。

2、Redis操作命令

1)save 主进程执行RDB,会阻塞所有命令

2)bgsave fork一个子进程执行RDB,避免主进程受到阻塞

3)在redis.config条件执行RDB

save 900 1 (:指的是当900秒内有一个key被修改则执行RDB)

3、底层原理

页表:记录虚拟地址和物理地址的映射关系表

RDB的底层执行原理:当需要RDB时主进程会对物理内存中的数据进行写操作单Linux系统下的进程是不能直接访问物理内存 的,这个时候就会由操作系统分配给主进程一个页表 ,上面包含了虚拟地址和物理地址的映射关系,当我们修改虚拟地址的数据时对应的物理地址的数据也会由于映射而改变,可如果只用主进程来执行RDB的话,会阻塞主进程的所有命令,所以我们通常采用bgsave来开启一个子进程执行RDB,开启子进程就是将主进程的页表复制给子进程, 这时主进程和子进程会实现数据的共享,可以同时读数据并将内存数据持久化到磁盘当中且不影响主进程命令的执行,但如果子进程进行读数据的同时主进程进行写数据,那么持久化就会出现脏数据,解决办法是在fork中会采用copy-on-write技术当主进程进行写操作的时候会把内存中对应的数据复制一份至内存中新的地址然后进行页表的更新以及写操作即可,再次进行RDB时子进程就能读取到最新数据了。

三、AOF

1、介绍

AOF简单来说就是将每次的Redis命令记录到AOF文件中,相当于日志记录,当Redis实例宕机时,从磁盘读取AOF文件重新执行一次AOF中命令即可恢复数据,数据完整性较高,刷盘策略决定了AOF文件更新的频率

2、Redis操作命令

1)AOF在Redis中默认是关闭的,需要在redis.config中手动开启

#默认为no 开启为yes

appendonly yes;

#AOF文件命名

appendfilename "name.aof"

2)三种刷盘策略:

apeendfsync Always 同步刷盘

appendfsync everysec 每秒刷盘

appendfsync no 操作系统控制

3)bgrewriteof

如果AOF文件中的命令有两个或多个是针对同一个key进行写操作的,但只有最后一次写命令会实际生效,这样会造成很大的命令冗余,这时我们可以用bgrewriteof来对AOF文件进行命令重写,去除那些冗余的命令。

示例:

原AOF文件

set num 123

set name john

ser num 456

重写后AOF文件

mset name john num 456

我们可以在redis.config中设置重写条件

#指的是当AOF文件大于原来的150%时进行bgrewrite文件重写

auto-aof-rewrite-percentage 150

#指的是当AOF文件最小多大以上才触发重写

auto-aof-rewrite-min-size 64mb

相关推荐
这个DBA有点耶5 小时前
2026年分布式数据库有哪些主流选择?先评估这5个维度再决定
数据库·分布式·dba
这个DBA有点耶8 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
胡写代码8 小时前
数据库审计字段,别再每张表各写一套了——我统一成这 6 个字段
数据库
SelectDB12 小时前
为什么 JSON 正在成为分析数据库新的竞争点?
数据库·json·agent
ClouGence13 小时前
开源数据库管理工具 CloudDM 4.2.0 发布,新增 GoldenDB、KingbaseES 等数据源
数据库·dba·devops
发霉的馒头13 小时前
ORA-00845: MEMORY_TARGET not supported on this system的解决方法
数据库
草莓熊Lotso15 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
煎饼皮皮侠16 小时前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_1 天前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
橙子家1 天前
OSS 文件上传的几个风险点和解决方案
数据库