0

0

redis 持久化有几种方式?

煙雲

煙雲

发布时间:2025-10-26 10:07:02

|

642人浏览过

|

来源于php中文网

原创

RDB和AOF持久化方式各有优劣,选择需根据场景权衡。RDB以快照形式实现,恢复速度快、适合冷备,但可能丢失数据;AOF记录每次写操作,数据安全性高,但恢复慢、文件大。RDB通过BGSAVE非阻塞生成快照,配置save规则触发自动持久化;AOF通过appendfsync控制刷盘策略,推荐everysec以平衡性能与安全。AOF可重写压缩文件体积。两者可同时开启,优先用AOF恢复以保障数据完整。最佳实践:高安全性要求用AOF或双开,定期重写与备份;高恢复速度需求用RDB。最终选择应基于数据安全与性能的权衡。

redis 持久化有几种方式?

Redis 持久化主要有两种方式:RDB (Redis Database) 和 AOF (Append Only File)。RDB 是快照形式,AOF 则是记录每次写操作的日志。

RDB 还是 AOF,怎么选?其实没有绝对的答案,得看你的具体场景。

RDB 的优势在于恢复速度快,适合做冷备,但缺点是数据可能会有丢失。AOF 的优势在于数据安全性更高,但缺点是恢复速度慢,文件体积也更大。

RDB 持久化:快照的艺术

RDB 就像给你的数据拍了个照片,然后存起来。下次要恢复的时候,直接把照片拿出来就行了。

RDB 的工作原理

Redis 可以通过 SAVEBGSAVE 命令来触发 RDB 持久化。SAVE 命令会阻塞 Redis 主进程,不推荐在生产环境中使用。BGSAVE 命令则会 fork 一个子进程来执行持久化操作,不会阻塞主进程。

fork 子进程后,子进程会遍历 Redis 的内存数据,然后将数据写入到 RDB 文件中。

RDB 的配置

RDB 相关的配置主要在 redis.conf 文件中。

  • save : 定义自动触发 RDB 持久化的条件。例如,save 900 1 表示 900 秒内如果至少有 1 个 key 被修改,则触发 RDB 持久化。可以配置多个 save 指令,满足任意一个条件都会触发。
  • stop-writes-on-bgsave-error yes|no: 当 BGSAVE 出错时,是否停止写入操作。建议设置为 yes,防止数据不一致。
  • rdbcompression yes|no: 是否对 RDB 文件进行压缩。压缩可以减小文件体积,但会增加 CPU 消耗。
  • dbfilename dump.rdb: RDB 文件的名称。
  • dir ./: RDB 文件存放的目录。

RDB 的优缺点

  • 优点
    • 恢复速度快:RDB 文件是二进制文件,恢复时直接加载到内存即可。
    • 适合做冷备:RDB 文件可以方便地进行备份和迁移。
    • 对性能影响较小:BGSAVE 命令通过子进程执行,不会阻塞主进程。
  • 缺点
    • 数据可能会有丢失:如果 Redis 宕机,可能会丢失最后一次 RDB 持久化之后的数据。
    • RDB 文件体积较大:RDB 文件包含 Redis 的所有数据,文件体积可能会比较大。

AOF 持久化:记录每一次操作

AOF 就像一个日记本,记录了 Redis 每次执行的写操作。下次要恢复的时候,把日记本里的内容重新执行一遍就行了。

AOF 的工作原理

Redis 会将每次执行的写操作以追加的方式写入到 AOF 文件中。

AOF 的配置

magento(麦进斗)
magento(麦进斗)

Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的

下载

AOF 相关的配置主要在 redis.conf 文件中。

  • appendonly yes|no: 是否开启 AOF 持久化。
  • appendfilename appendonly.aof: AOF 文件的名称。
  • appendfsync always|everysec|no: AOF 文件的刷盘策略。
    • always: 每次写操作都立即刷盘,数据安全性最高,但性能最差。
    • everysec: 每秒刷盘一次,数据安全性较高,性能也较好,是推荐的策略。
    • no: 由操作系统决定何时刷盘,数据安全性最低,性能最好。
  • auto-aof-rewrite-percentage 100: AOF 文件自动重写的比例。当 AOF 文件的大小达到上一次重写后的大小的百分之多少时,触发 AOF 重写。
  • auto-aof-rewrite-min-size 64mb: AOF 文件自动重写的最小体积。当 AOF 文件的大小达到这个值时,才会触发 AOF 重写。

AOF 的重写

随着时间的推移,AOF 文件会越来越大,其中包含了很多冗余的操作。为了减小 AOF 文件的体积,Redis 提供了 AOF 重写的功能。

AOF 重写会创建一个新的 AOF 文件,只包含恢复当前 Redis 数据状态所需的最小操作集合。

AOF 重写可以通过 BGREWRITEAOF 命令手动触发,也可以通过配置自动触发。

AOF 的优缺点

  • 优点
    • 数据安全性更高:AOF 可以保证数据尽可能不丢失,即使 Redis 宕机,也最多只会丢失一秒钟的数据。
    • 可读性好:AOF 文件是文本文件,可以方便地进行分析和调试。
  • 缺点
    • 恢复速度慢:AOF 文件需要重新执行所有的写操作,恢复速度较慢。
    • 文件体积较大:AOF 文件记录了所有的写操作,文件体积可能会比较大。
    • 对性能有一定影响:AOF 需要进行刷盘操作,会对性能产生一定影响。

RDB 和 AOF 如何协同工作?

可以同时开启 RDB 和 AOF 持久化。在这种情况下,Redis 会优先使用 AOF 进行恢复。

为什么优先使用 AOF 恢复?

因为 AOF 记录了更完整的数据,可以保证数据安全性。

RDB 和 AOF 的最佳实践

  • 如果对数据安全性要求不高,可以使用 RDB 持久化。
  • 如果对数据安全性要求较高,可以使用 AOF 持久化。
  • 如果对数据安全性要求非常高,可以同时开启 RDB 和 AOF 持久化。
  • 建议使用 everysec 刷盘策略,兼顾数据安全性和性能。
  • 定期进行 AOF 重写,减小 AOF 文件的体积。
  • 定期备份 RDB 和 AOF 文件,以防止数据丢失

如何选择合适的持久化策略?

选择哪种持久化策略,取决于你的应用场景。

  • 数据安全性要求高,但对恢复速度要求不高:选择 AOF 持久化,并使用 everysec 刷盘策略。
  • 数据安全性要求不高,但对恢复速度要求高:选择 RDB 持久化,并调整 save 指令,控制 RDB 文件的生成频率。
  • 数据安全性要求高,且对恢复速度也有一定要求:同时开启 RDB 和 AOF 持久化,并定期进行 AOF 重写。

记住,没有银弹。选择最适合你的方案才是最好的。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

187

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

288

2023.10.25

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

343

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1073

2023.11.14

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

175

2025.09.12

discuz database error怎么解决
discuz database error怎么解决

discuz database error的解决办法有:1、检查数据库配置;2、确保数据库服务器正在运行;3、检查数据库表状态;4、备份数据;5、清理缓存;6、重新安装Discuz;7、检查服务器资源;8、联系Discuz官方支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

210

2023.11.20

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

972

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

633

2023.11.14

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号