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
相关推荐
2501_9336707911 小时前
2026秋招数据分析岗备考路线:SQL、BI、项目与面试题拆解
数据库
我要见SA姐113 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
xcLeigh14 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客14 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
我要见SA姐115 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
Nturmoils16 小时前
一份 KDMS 评估报告,怎样排出迁移先后顺序
数据库
这个DBA有点耶16 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
独泪了无痕16 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
码少女17 小时前
Linux--多路转接之select
java·服务器·数据库
梁辰兴17 小时前
软件工程:软件维护的副作用
数据库·软件工程·梁辰兴·控制方法·软件维护的副作用·副作用类型·副作用原因