redis数据持久化

一、RDB持久化

RDB(Redis Backup File):把内存中的所有数据都记录到磁盘中,当Redis实例故障重启后,从磁盘读取快照文件,恢复数据

redis在正常停机之前会做一次持久化,但异常停机会导致数据丢失

手动命令

bash 复制代码
#使用redis主进程把内存数据写入磁盘,此操作会阻塞所有命令
save
#另起一个子进程执行rdb,避免主进程受到影响
bgsave

写在redis.conf中redis自动执行

bash 复制代码
#save 时间 key修改次数
#如果900秒内至少有1个key被修改,就拉起一个bgsave进程
save 900 1
#禁用RDB
save ""

#其他配置

#是否压缩数据文件,建议不开启,压缩会消耗cpu
rdbcompression yes
#RDB文件名称,修改名称后原名称将不会读取
dbfilename dump.rdb
#文件保存的路径目录
dir ./

bgsave执行步骤

① fork主进程得到子进程

② 子进程共享主进程的内存数据

③ 完成fork后读取内存数据并写入RDB文件

④使用新的RDB文件替换旧的RDB文件

fork采用的是copy-on-write技术

① 当主进程执行读操作时,访问共享内存

② 当主进程执行写操作时,则会拷贝一份数据,执行写操作

二、AOF持久化

AOF全称为Append Only File(追加文件),Redis处理的每一个写命令都会记录在AOF文件,可以看作是命令日志文件

bash 复制代码
#是否开启AOF,默认为no,yes表示开启
appendonly yes
#AOF文件名称
appendfilename "appendonly.aof"

#配置AOF记录的频率,有三种方式

#每执行一次写命令就立刻记录到AOF文件(性能最好,消耗最大,几乎不会丢数据)
appendfsync always
#写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案(性能折中,1s内如果宕机数据会丢失)
appendfsync everysec
#写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no

AOF记录的是操作记录,RDB记录的是值

因为是记录命令,AOF文件会比RDB文件大得多,而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义,通过执行bgwriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果

bash 复制代码
bgrewriteaof

自动触发重写配置

bash 复制代码
#默认值100 AOF文件比上次文件增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
#默认64mb AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb

三、混合持久化

在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾

从AOF文件中查看到的就不是AOF标准格式的数据,因为其中混入的RDB格式的数据

redis5.0自动开启混合持久化

打开混合持久化:

bash 复制代码
#redis-cli 查询是否打开了混合持久化
config get aof-use-rdb-preamble

#1.永久设置:在redis.conf设置
aof-use-rdb-preamble yes

#2.通过命令行开启,重启后生效
config set aof-use-rdb-preamble yes
相关推荐
瀚高PG实验室8 小时前
瀚高数据库提交数据后,是否需要COMMIT
数据库·postgresql·瀚高数据库
bksczm8 小时前
MySQL程序架构
数据库·mysql·架构
论文复现现场8 小时前
2026 低成本 AI Agent 模型怎么选?DeepSeek V4.1 Flash、Qwen3.8 Flash、GLM-5.3 Flash 对比
数据库·人工智能·qwen·ai agent·glm·deepseek
摇滚侠16 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试17 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_9377671618 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_19 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
夕除20 小时前
redis--模型
redis
I Am a robert girl21 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒21 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界