核心内容摘要
99热这里有精品:点燃你的激情,解锁无限可能
文章目录
引言Redis 是内存数据库数据会丢吗
RDB定期快照式持久化
1 什么是 RDB
2 RDB 的触发方式自动触发配置手动触发
3 RDB 的工作原理
4 RDB 的优点
5 RDB 的缺点
AOF追加日志式持久化
1 什么是 AOF
2 AOF 的开启方式
3 AOF 写入策略fsync
4 AOF 重写Rewrite
5 AOF 的优点
6 AOF 的缺点
RDB vs AOF核心对比
同时开启 RDB AOF
生产环境配置建议通用建议
一个常见误区
8.
总结参考
引言Redis 是内存数据库数据会丢吗Redis 被称为“内存数据库”很多初学者都会有疑问Redis 重启后数据还在吗答案是取决于你是否开启了持久化以及使用哪种方式。
Redis 提供了两种核心持久化机制RDBRedis DataBase快照AOFAppend Only File日志它们分别从性能和数据安全两个方向解决问题。
RDB定期快照式持久化
1 什么是 RDBRDB 的核心思想是在某一时刻把 Redis 内存中的数据完整地保存为一个快照文件。
生成的文件通常是dump.rdb
2 RDB 的触发方式RDB 可以通过多种方式触发自动触发配置save 900 1 save 300 10 save 60 10000含义900 秒内有 1 次写 → 生成快照300 秒内有 10 次写60 秒内有 10000 次写手动触发SAVE# 阻塞BGSAVE# 后台推荐
3 RDB 的工作原理Redis 主进程fork子进程子进程将内存数据写入.rdb文件主进程继续处理请求COW 机制
4 RDB 的优点文件紧凑体积小恢复速度快对 Redis 性能影响较小适合备份、迁移
5 RDB 的缺点可能丢失最近一段时间的数据大数据量下 fork 有开销不适合高频数据变更场景
AOF追加日志式持久化
1 什么是 AOFAOF 的核心思想是把每一次写命令按顺序追加到日志文件中。
文件通常是appendonly.aofAOF 持久化功能的实现可以简单分为 5 步命令追加append所有的写命令会追加到 AOF 缓冲区中。
文件写入write将 AOF 缓冲区的数据写入到 AOF 文件中。
注意此时并没有同步到磁盘。
文件同步fsyncfont stylecolor:rgb(60, 60,
;fsync/font将阻塞直到写入磁盘完成后返回保证了数据持久化。
文件重写rewrite随着 AOF 文件越来越大需要定期对 AOF 文件进行重写达到压缩的目的。
重启加载load当 Redis 重启时可以加载 AOF 文件进行数据恢复。
2 AOF 的开启方式appendonly yes
3 AOF 写入策略fsyncappendfsync always appendfsync everysec appendfsync no策略数据安全性能always最安全最慢everysec较安全推荐no风险高最快
4 AOF 重写Rewrite随着时间推移AOF 会越来越大因此 Redis 提供AOF 重写机制用最少的命令重建当前数据状态。
触发方式自动配置手动BGREWRITEAOF
5 AOF 的优点数据安全性高丢失数据少可读性好文本命令
6 AOF 的缺点文件体积大恢复速度慢写入频繁对磁盘依赖高
RDB vs AOF核心对比维度RDBAOF持久化方式快照日志数据安全较低较高性能影响小较大文件体积小大恢复速度快慢适用场景备份高可靠
同时开启 RDB AOFRedis支持两者同时开启save ... appendonly yes启动时优先使用AOF 恢复数据RDB 作为备份手段这是生产环境的推荐方案。
生产环境配置建议通用建议AOF 使用everysec开启 RDB 作为兜底合理配置重写阈值auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
一个常见误区AOF 一定比 RDB 安全。
实际上appendfsync no风险很高任何机制都存在极端丢失场景
8.