Redis及其两种持久化技术详解

第一部分:什么是 Redis?(核心概念)

简单来说,Redis 就是一个运行在内存(RAM)里的超快数据库。

1. 为什么它快?

想象一下你正在考试:

  • 内存 (Redis) :就像你的草稿纸。你写字极其快,随手就能改,存取数据也就是一瞬间的事。
  • 硬盘 (MySQL/传统库) :就像你的档案柜。你要存数据,得先站起来,走到柜子前,拉开抽屉,找到文件夹,写进去。这就慢多了。
2. 致命弱点

草稿纸(内存)有个大问题: 一旦停电(或者你把草稿纸扔了),上面的数据瞬间全没了!

3. 什么是持久化?

为了解决"停电就丢数据"的问题,我们需要定期把"草稿纸"上的内容,誊写到"档案柜"(硬盘)里去。
这个"从内存同步到硬盘"的过程,就叫持久化。


第二部分:Redis 的两种持久化武器

Redis 提供了两种截然不同的"誊写"方式:RDB 和 AOF。

1. RDB (Redis Database) ------ "照相机"模式

RDB方式的持久化是通过快照(snapshotting)完成的

【通俗理解】

RDB 就像是给数据库 "拍照片" 。

比如,你规定:每隔 5 分钟,就给整个数据库的数据拍一张快照,存成一个文件(dump.rdb)。

  • 工作方式:不管中间发生了什么,我只记录"这一刻"数据的最终状态。
  • 触发条件(配置文件中的 save):
  • save 900 1:如果 15 分钟内,至少有 1 个数据变了,我就拍张照。
  • save 60 10000:如果 1 分钟内,居然有 10000 个数据变了(说明数据变动极其频繁),我立刻拍张照。

【优缺点分析】

  • 优点:

    • 恢复快:Redis 重启时,只要读取这张照片,数据一下子就全回来了。
    • 文件小:因为是压缩过的二进制文件。
  • 缺点(致命):

    • 容易丢数据 :假设你设置每 5 分钟拍一次照。如果你在第 4 分钟的时候服务器挂了,那么这 4 分钟内所有的新数据都丢失了(因为还没来得及拍照)。
2. AOF (Append Only File) ------ "记日记"模式

每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件

【通俗理解】

AOF 就像是 "记流水账" 或 "写日记" 。

Redis 会把你做的每一个操作都记录下来:

  • "如果你执行 set name zhangsan,Redis 就在 AOF 文件里写一行:'他把 name 设为了 zhangsan'。"
  • "如果你执行 del name,Redis 又写一行:'他删除了 name'。"

【工作方式】

当你重启 Redis 时,它没有"照片",但它有这本"日记"。它会把日记里的操作从头到尾重新执行一遍,这样数据就恢复了。

【优缺点分析】

  • 优点:

    • 数据安全 :通常配置为每秒记录一次(appendfsync everysec),就算挂了,最多也就丢 1 秒的数据。
  • 缺点:

    • 文件大:日记会越来越厚。
    • 恢复慢:重启时,Redis 要把这本厚厚的日记从头读到尾,重新执行几百万条命令,速度比 RDB 慢很多。

第三部分:图解对比与总结(面试必看)

特性 RDB (快照/照相) AOF (日志/记账)
核心原理 定时将内存数据整体存盘 记录每一条写操作命令
数据安全性 低。可能会丢失最后一次快照后的数据 高。最多丢失 1 秒数据 (默认配置下)
文件大小 小 (二进制压缩) 大 (纯文本记录)
恢复速度 快 (直接加载数据) 慢 (需要回放命令)
默认开启 是 否 (需要 appendonly yes)

第四部分:实际应用中的建议

如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF

在真实的生产环境(工作)中,我们通常怎么做?

  1. 混合使用(推荐):
  • 同时开启 RDB 和 AOF。
  • 平时重启时,Redis 会优先用 AOF 来恢复数据(因为它数据更全)。
  • RDB 作为一个"兜底"的备份,比如每小时备份一次 RDB 文件发给运维存起来,万一 AOF 文件坏了,还能用 RDB 救急。
  1. Redis 4.0+ 的混合持久化:
  • 现在的 Redis 有个黑科技:AOF 文件的前半段是 RDB 格式,后半段是 AOF 增量格式。
  • 这完美结合了 RDB 的加载速度快 和 AOF 的数据不丢失。

总结教学

  • Redis 是为了快而生的内存数据库。
  • 持久化 是为了防止断电丢数据。
  • RDB 是每隔一段时间存一份全量备份(快,但有丢失风险)。
  • AOF 是每秒记录一次操作日志(安全,但文件大恢复慢)。
相关推荐
超级新零售2 小时前
零售 SaaS 与本地部署,技术责任边界究竟怎么分?
数据库·零售
考虑考虑2 小时前
瀚高数据库
数据库·后端·postgresql
麻瓜code2 小时前
秒杀优化三连:Lua + 阻塞队列 + Redis Stream,响应从 3.4 秒到毫秒级
redis·junit·lua
dishugj3 小时前
oracle日志切换三条命令区别
数据库
Patrick在香港3 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
悟道书生3 小时前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
赤龙ERP4 小时前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern
lusklusklusk4 小时前
SQL Server补丁版本号为什么“日期新反而版本低”?——GDR、CU、CU+GDR 版本号规则与升级路径详解
数据库
key_3_feng4 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
TangGeeA4 小时前
数据库、SQL 与 DB AI
数据库·人工智能·sql