讲师中心 微信公众号
AI工具推荐 视频效率加速

Redis持久化测试方案_模拟突发写入下RDB/AOF的表现

千晨小哥_5345

千晨小哥_5345

发布时间:2026-05-08 08:00:18

|

723人浏览过

|

来源于php中文网

原创

要用 redis-benchmark 模拟突发写入压力,需设 -n 500000 -c 200 -t set -P 10,清空 save 配置并禁用自动 RDB,通过 INFO persistence 监控 rdb_bgsave_in_progress 和 aof_delayed_fsync 等指标定位瓶颈。

redis持久化测试方案_模拟突发写入下rdb/aof的表现

如何用 redis-benchmark 模拟突发写入压力

直接用 redis-benchmark 走默认参数,根本压不出 RDB/AOF 的瓶颈点——它默认只发 10 万请求、并发 50,节奏太匀,没法触发 fork 阻塞或 AOF fsync 延迟。要测“突发”,得人为制造短时高吞吐+长连接堆积。

实操建议:

  • 用 -n 500000 -c 200 -t set:50 万次写入、200 并发,比默认更易让子进程 fork 拖慢主线程
  • 加 -P 10 启用 pipeline,单连接批量发命令,模拟真实业务突发场景(比如秒杀后集中落库)
  • 务必在测试前清空 save 配置项,避免干扰;同时用 CONFIG SET save "" 动态关闭自动 RDB,只保留你手动控制的时机
  • 记录 INFO persistence 中的 rdb_bgsave_in_progress 和 aof_rewrite_in_progress 变化,比看日志更准

RDB fork 阻塞怎么定位和量化

fork 不是“卡死”,而是主线程在复制页表时短暂不可响应,表现为 client 端超时或延迟毛刺。Linux 的 vm.overcommit_memory=1 设置会影响 fork 效率,但更关键的是 Redis 进程的内存页数量——不是总内存大小,而是实际分配的匿名页数。

实操建议:

  • 用 cat /proc/$(pidof redis-server)/status | grep VmRSS 查 RSS,再结合 getconf PAGESIZE 估算页数,页越多 fork 越慢
  • 在 redis.conf 中设置 auto-aof-rewrite-percentage 0,禁用 AOF rewrite,避免它和 RDB fork 冲突
  • 用 strace -p $(pidof redis-server) -e trace=fork,clone 监控 fork 耗时(注意 strace 本身有开销,仅用于定位)
  • 观察 latency monitor 输出:redis-cli --latency -h x.x.x.x -p 6379,突发期间若出现 >100ms 的延迟尖峰,大概率是 fork 导致

AOF fsync 策略对写入吞吐的真实影响

appendfsync always 在突发写入下不是“每次写都磁盘刷”,而是每次 write() 后立刻调用 fsync(),这会让吞吐暴跌到几百 QPS;everysec 是折中,但要注意:它不是“每秒刷一次”,而是把这一秒内所有 write 缓冲合并刷盘,一旦后台刷盘线程卡住(比如磁盘 I/O 高),缓冲区会堆积,最终触发阻塞式 fsync。

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载

实操建议:

  • 测试前用 CONFIG SET appendonly yes + CONFIG SET appendfsync everysec,再用 redis-cli BGREWRITEAOF 触发一次重写,确保 AOF 文件干净
  • 监控 INFO persistence 中的 aof_delayed_fsync:值大于 0 表示已发生延迟刷盘,说明缓冲区开始积压
  • 对比 appendfsync no(依赖 OS 刷盘)下的吞吐,你会发现它接近 RDB 模式,但崩溃丢失风险不可控——这不是性能问题,是数据可靠性边界问题
  • 别只看平均延迟,用 redis-cli --intrinsic-latency 100 测 Redis 自身事件循环抖动,排除网络和客户端干扰

RDB 和 AOF 混合开启时谁真正接管写入路径

Redis 4.0+ 的混合持久化(aof-use-rdb-preamble yes)不是“RDB 和 AOF 同时工作”,而是在 AOF rewrite 完成后,用 RDB 格式快照替代前面的文本协议命令。所以日常写入仍走 AOF append,只有 rewrite 期间才生成 RDB 片段。

实操建议:

  • 开启混合模式后,redis-cli BGREWRITEAOF 生成的 AOF 文件开头是 REDIS0009 魔数(RDB 格式),后面才是 AOF 命令——用 head -c 10 aof-file 可验证
  • 不要以为开了混合模式就能“兼顾速度和安全”:rewrite 期间依然会 fork,且 AOF 文件体积比纯 RDB 大得多,恢复更慢
  • 测试恢复时间时,用 time redis-server redis.conf --appendonly yes 启动并计时,注意观察 INFO persistence 中的 aof_last_load_time_sec 字段,它比 shell 的 time 更准
  • 线上若用混合模式,必须预留足够内存:rewrite 过程中,Redis 会同时持有旧 AOF、新 AOF(含 RDB 片段)、以及 fork 出的子进程内存副本

最常被忽略的一点:持久化行为高度依赖操作系统调度和磁盘 I/O 调度器。同一份配置,在 ext4 + deadline 和 xfs + mq-deadline 下表现可能差 3 倍——别只盯着 Redis 参数调优,先确认 cat /sys/block/*/queue/scheduler 和 vm.swappiness 是否合理。

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

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

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

4529

2023.11.02

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

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

4075

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

7572

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

643

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

756

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

7482

2024.04.07

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1160

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1136

2024.04.07

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

80

2026.10.16

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn