redis-benchmark 参数是什么
redis-benchmark 是自带的压测工具:用指定的命令组合、并发连接数与管道深度向实例发出可控负载,输出吞吐与延迟统计。它的数字只在同一套参数下互相可比——管道深度、并发数或键分布的任何一个改动都会改变结果含义,所以做容量结论前必须先固定口径。
基本信息
| 用途 | 吞吐与延迟基线、变更前后对比 |
|---|---|
| 可比性 | 只有参数完全相同时结果才可比 |
| 目标实例 | 用 -h 与 -p 指定,注意不要打到生产主库 |
| 输出形式 | 默认表格,可加 -q 精简或用 --csv 便于采集 |
常用参数
| 参数 | 作用 | 使用建议 |
|---|---|---|
| -n | 总请求数,默认 100000 | 太小会被启动开销干扰,做趋势对比要足够长 |
| -c | 并发连接数,默认 50 | 与业务连接池规模对齐 |
| -P | 每连接管道深度,默认 1 | 决定吞吐上限,对比时必须保持一致 |
| -t | 命令集合,如 set,get | 按业务读写比例挑选 |
| -r | 键随机范围 | 模拟真实键分布,避免全程只压一个键 |
| -d | 值大小(字节),默认 3 | 与真实 value 体积一致 |
| --threads | 压测端线程数 | 压测端先打满时增加 |
| --csv | 结果以 CSV 输出 | 便于脚本采集与表格对比 |
示例
示例
redis-benchmark -t ping -q # 先确认连通与基线
redis-benchmark -t set,get -n 200000 -c 50 -P 1 -q
redis-benchmark -t set,get -n 200000 -c 100 -P 16 -r 100000 -d 100 -q
redis-benchmark --threads 4 -n 1000000 -c 200 -P 8 -t get -r 1000000 --csv
# 只在测试实例或业务低峰执行,并提前告知相关方典型使用场景
- 版本升级前后对比:同一套参数跑两遍,确认无性能回退
- 配置变更验证:改完参数或网络路径后做前后对照
- 部署形态对比:容器与物理机、跨机房链路的基线差异
- 容量评估:结合业务读写比例与值体积设计负载形状
- 回归基线:把常用参数固定成脚本,按期重跑
管道深度提高会显著抬高吞吐数字,逐条模式与管道模式的结果不能混着比;记录结果时把完整命令行一起留存,否则后续无法复现。
压测会真实写入数据并占用 CPU 与带宽;不要对生产主库跑高并发写入压测,也不要与业务高峰重叠。