针对Redis的话题估计有些读者已经开始反感了,昨天还是有一些读者困惑,这就具体讲述下Redis持久化方式-RDB的实现方式~
触发时机
手动触发:
save: 阻塞当前 Redis 服务器, 直到 RDB 过程完成为止, 对于内存比较大的实例会造成长时间阻塞, 线上环境不建议使用
bgsave: Redis 进程执行 fork 操作创建子进程, RDB 持久化过程由子进程负责, 完成后自动结束。阻塞只发生在 fork 阶段, 一般时间很短
使用 save 相关配置, 如 “save m n”。表示 m 秒内数据集存在 n 次修改时, 自动触发 bgsave。
如果从节点执行全量复制操作, 主节点自动执行 bgsave 生成RDB文件并发送给从节点, 更多细节见6.3节介绍的复制原理。 执行 debug reload 命令重新加载 Redis 时, 也会自动触发 save 操作。(不清楚是 save 还是 bgsave) 默认情况下执行 shutdown 命令时, 如果没有开启 AOF 持久化功能则自动执行 bgsave。
流程说明
RDB的文件处理
保存: RDB 文件保存在 dir 配置指定的目录下, 文件名通过 dbfilename 配置指定。可以通过执行 config set dir {newDir}
和 config set dbfilename {newFileName}
运行期动态执行, 当下次运行时 RDB 文件会保存到新目录。
压缩: Redis 默认采用 LZF 算法对生成的 RDB 文件做压缩处理, 压缩后的文件远远小于内存大小, 默认开启, 可以通过参数 config set rdbcompression {yes|no}
动态修改。
校验: 如果 Redis 加载损坏 的RDB 文件时拒绝启动, 并打印如下日志:
# Short read or OOM loading DB. Unrecoverable error, aborting now.
复制
这时可以使用 Redis 提供的 redis-check-dump 工具检测 RDB 文件并获取对应的错误报告。
RDB的优缺点
优点:
RDB 是一个紧凑压缩的二进制文件, 代表 Redis 在某个时间点上的数据快照。非常适用于备份, 全量复制等场景
Redis 加载 RDB 恢复数据远远快于 AOF 的方式
缺点:
RDB 方式数据没办法做到实时持久化/秒级持久化。因为 bgsave 每次运行都要执行 fork 操作创建子进程, 属于重量级操作, 频繁执行成本过高
RDB 文件使用特定二进制格式保存, Redis 版本演进过程中有多个格式的 RDB 版本, 存在老版本 Redis 服务无法兼容新版 RDB 格式的问题
- END -
针对Redis的持久化方式原先有整理过一期视频
往期推荐

文章转载自码农架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国产非关系型数据库 Eloqkv 初体验
JiekeXu
169次阅读
2025-04-10 23:51:35
Redis概要
听溪
50次阅读
2025-04-11 10:23:10
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
45次阅读
2025-04-17 10:41:56
Redis数据库——Cluster集群模式
编程Cookbook
42次阅读
2025-04-16 15:34:44
安装与配置Redis
鲁鲁
42次阅读
2025-04-11 10:26:10
使用Jedis访问Redis数据库
怀念和想念
38次阅读
2025-04-11 15:08:30
Redis geo 实战:“附近的人”实现,打造社交的新维度
老王两点中
38次阅读
2025-04-11 09:02:30
Redis提供的持久化机制
luyingjun
29次阅读
2025-04-11 15:11:05
亚马逊:MemoryDB,一款内存优先的云数据库
数据库应用创新实验室
27次阅读
2025-04-18 09:54:15
优雅遍历和删除特定开头的key
陌殇流苏
24次阅读
2025-04-25 12:17:03