Redis 持久化存储

一、简介

1、RDB

redis默认的持久化存储方式,每隔一段时间将内存中的数据写入磁盘中。有手动触发和自动出发两种触发方式。

2、AOF

AOF持久化将被执行的写命令记录到AOF文件的末尾,来记录数据发生的变化。Redis启动时,读取AOF文件中的命令并在内存中重新执行,从而恢复数据。

3、区别

|-------|------------------------------------------------------------------|---------------------|
| 持久化技术 | 优点 | 缺点 |
| RDB | 1、拥有相同数据集时,相比AOF持久化所占用磁盘空间更少 2、使用单独的子进程进行持久化存储,主进程不进行其它IO操作,更为高效 | 1、隔一段时间进行持久化,数据安全性差 |
| AOF | 1、通过记录写命令的方式进行持久化,即使发生异常,也可以通过AOF文件恢复数据,安全性更高 | 1、占用磁盘空间大 2、恢复数据慢 |

二、配置

1、RDB
1.1 工作模式

(1)手动触发

由主进程执行save命令,执行过程中会阻塞所有用户请求,直至执行完成。

bash 复制代码
192.168.56.136:6379> save
OK

(2)自动触发

bgsave。当内存增长到指定值或指定百分比时,自动触发bgsave。主进程调用fork函数,派生出子进程,进行持久化存储,主进程只负责处理客户请求。数据会先存储到临时文件,当持久化处理完后,用临时文件替换上次持久化的文件dump.rdb。

1.2 配置
bash 复制代码
# rdb文件存放目录
dir /usr/local/redis/
# rdb文件名
dbfilename dump.rdb
# 是否压缩
rdbcompression yes
# 是否检查备份文件完整性
rdbchecksum yes
# 当磁盘空间满时,是否停止redis写操作
stop-writes-on-bgsave-error yes
# 备份策略
# 每隔1分钟,写1000次
save 60 1000
1.3 禁用RDB配置
bash 复制代码
# 禁用RDB
save ""
2、AOF
2.1 工作模式

AOF持久化以日志的形式记录写操作,当服务器宕机重启或服务重启后,会按顺序逐行读取日志来重构数据库并恢复数据。

一般都是和RDB共同使用,不单独使用。

2.2 配置
bash 复制代码
# 开启AOF持久化
appendonly yes

# 工作目录位置
dir /usr/local/redis/

# AOF文件名
# appendonly.aof.1.base.rdb作为基文件
# appendonly.aof.1.incr.of,appendonly.aof.2.incr.of作为增量文件
# appendonly.aof.manifest作为清单文件
appendfilename "appendonly.aof"

# AOF文件存放目录
appenddirname "appendonlydir"

# AOF fsync策略
# 默认everysec,每秒写入一次
# no:只操作系统需要的时候写入,由操作系统操控。速度快,安全性差
# always: 有写入操作就追加到AOF文件中。降低速度,安全性高
appendfsync everysec

# 重写期间是否执行fsync操作
# 默认no,执行fsync。安全性更高,但是影响性能
# yes,不执行fsync。性能更高,但是会丢失数据,最多30秒的数据
no-appendfsync-on-rewrite no

# AOF重写规则
# 当AOF文件超过上次重写文件的百分比(默认100%),或者超过64M
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否允许redis在加载aof文件过程中,遇到文件末尾截断或损坏,仍继续加载其它部分
# 默认 yes。允许忽略错误,继续加载。
# no。不允许。每次重启前需要执行 redis check AOF 命令,修复AOF文件
aof-load-truncated yes

# 是否开启RDB AOF混合模式
# 默认yes,开启混合模式。重写时,将持久化数据以RDB格式写入到AOF文件开头,后续的数据以AOF格式追加到末尾
# no,不开启
aof-use-rdb-preamble yes

# 是否在AOF日志文件记录时间戳
# 默认 no,不开启。
# yes,开启。对性能的影响微不足道,会占用更多的磁盘空间,但是可以提供更精确的数据恢复时间
aof-timestamp-enabled no
相关推荐
HackTwoHub5 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t5 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK5 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
TDengine (老段)6 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
callJJ7 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
S1998_1997111609•X7 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
KmSH8umpK8 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第七篇
数据库·redis·分布式
0xDevNull9 小时前
Linux 中 Nginx 代理 Redis 的详细教程
redis·后端
倒霉蛋小马9 小时前
【Redis】什么是缓存穿透?
缓存
BU摆烂会噶9 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain