Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?
发布于 2024-07-17
665
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
springboot葵花宝典
扫码关注公众号
扫码阅读
手机扫码阅读
Redis 的持久化方式概述
Redis 提供了两种数据持久化方式:
- RDB(Redis Database Backup file)
- AOF(Append Only File)
1. RDB
RDB 是 Redis 数据快照,将内存中的所有数据记录到磁盘。当 Redis 实例故障重启时,可以通过读取快照文件恢复数据。
1.1 RDB 执行持久化的情况
- 执行
save命令:主进程执行,阻塞所有命令。 - 执行
bgsave命令:通过子进程执行,避免主进程阻塞。 - Redis 停机时默认执行一次
save。 - 触发 Redis 内部机制的 RDB 条件,可通过
redis.conf配置。
1.2 RDB 的工作原理
RDB 通过子进程的 fork 操作共享主进程数据,采用写时复制技术(Copy-on-Write)。此过程会记录快照数据到磁盘。
1.3 RDB 的缺点
- 两次快照间可能丢失数据。
- 子进程的
fork和文件写入过程较耗时。
2. AOF
AOF 是命令日志文件,记录 Redis 每个执行的写命令,用于恢复数据时重新执行命令。
2.1 AOF 配置及刷盘策略
通过 redis.conf 文件配置 AOF 功能及刷盘频率:
always: 每次写命令后立即记录,可靠性高但性能影响大。everysec: 默认方案,每秒记录一次,性能和可靠性较平衡。no: 由操作系统决定记录时间,性能最好但可能丢失大量数据。
2.2 AOF 文件重写
由于 AOF 文件体积较大,可通过 bgrewriteaof 命令进行重写,减少冗余命令记录。触发条件可通过配置文件设置。
3. RDB 和 AOF 的优缺点对比
| 特点 | RDB | AOF |
|---|---|---|
| 持久化方式 | 定时快照 | 记录命令 |
| 数据完整性 | 可能丢失两次备份间数据 | 数据较完整,取决于刷盘策略 |
| 文件大小 | 压缩后较小 | 较大 |
| 宕机恢复速度 | 较快 | 较慢 |
| 系统资源占用 | 较高 | 主要占用磁盘 IO,重写时消耗较大 |
| 使用场景 | 可容忍数据丢失,追求启动速度 | 对数据安全性要求高 |
4. 生产使用建议
在生产环境中,建议同时开启 RDB 和 AOF。AOF 用于保证数据完整性,RDB 用于快速恢复和作为冷备。两者结合使用,可以更好地应对数据丢失和恢复速度问题。
springboot葵花宝典
springboot葵花宝典
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
springboot葵花宝典的其他文章
SpringBoot-零基础搭建前后端分离--后端搭建
SpringBoot-零基础搭建前后端分离--后端搭建
探索强大的Elasticsearch(ES):现代搜索与分析引擎
大数据时代带来了海量的信息和数据如何高效地管理、搜索和分析这些数据成为了企业和组织面临的重要挑战。Elasticsearch应运而生,广泛用于各种领域,从企业搜索、日志分析到监控系统,为用户提供了快速、准确的数据搜索和分析功能。
Spring Cloud Alibaba 注册中心 Nacos 入门
今天主要讲解了Nacos注册中心、Nacos Client(消费者和服务者创建)的搭建过程。
什么是类加载器?什么是双亲委派模型?
什么是类加载器?什么是双亲委派模型?
Spring Boot starter总结
spring boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线