Redis 的两种持久化方式:RDB 和 AOF,一次讲懂

把数据写进 Redis 后,查询一切正常。

可服务器一重启,数据却没了。

原因很简单:Redis 的数据主要存储在内存中。

内存读写很快,但断电、关机或 Redis 重启后,里面的数据可能会丢失。

所以,Redis 需要把内存中的数据保存到磁盘。这个过程,就叫作持久化

Redis 常用的持久化方式有两种:RDB 和 AOF

一、RDB:定期给数据拍照

RDB 就像给 Redis 数据定期拍快照。

例如每小时持久化一次,在晚上 8 点保存了一次,8 点到 8 点 10 分写入的新数据还没保存,服务器就断电了。重启后只能恢复到 8 点,之后的数据会丢失。

因此,RDB 的特点是:

定期保存某一时刻的完整数据。

优点是文件较小、恢复较快;缺点是两次快照之间的数据可能丢失。

RDB 保存的是某一个时间点的数据状态。

二、AOF:把每次操作记下来

AOF 可以理解为一本操作账本。

Redis 每执行一次写操作,就把这次操作记录下来。

例如:

text 复制代码
设置 name = Redis
将 count 加 1
删除 user

Redis 重启后,会按照记录重新执行这些操作,从而恢复数据。

相比 RDB,AOF 通常能保留更多最新数据,但文件也可能更大。

AOF 记录的是数据发生过的变化。

三、RDB 和 AOF 有什么区别?

对比项 RDB AOF
通俗理解 定期拍照 持续记账
保存内容 某一时刻的数据 每次写操作
数据丢失 可能丢失两次快照之间的数据 通常丢失的数据更少
文件大小 通常较小 通常较大
恢复方式 加载数据快照 重新执行写操作

总结

Redis 使用持久化,是为了在重启后恢复数据。

RDB 像拍照,保存数据状态;AOF 像记账,记录数据变化。

相关推荐
Feynman’s boom32 分钟前
PDF解析复盘
数据库·人工智能·算法·pdf解析
luteres1 小时前
Mybatis+SSM整合笔记
java·开发语言·mybatis
zfoo-framework8 小时前
redis基于指定6.0.9 tag新建学习分支
redis
程序员小八7778 小时前
MySQL 事务:一文把 ACID、隔离级别、MVCC、锁全串起来
数据库·mysql
lzhdim8 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
ltl9 小时前
ClickHouse Distributed 引擎与分布式查询路由
数据库
Wang's Blog9 小时前
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践
数据库·笔记·postgresql
whcyhhh10 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
晚染烟10 小时前
每日八股day31
mybatis
Elastic 中国社区官方博客11 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本
大数据·运维·数据库·人工智能·elasticsearch·ai