redis-benchmark 是什么
redis-benchmark 是 Redis 自带的压测工具,默认对一组内置命令生成负载并输出吞吐与延迟分布,用来快速了解实例在当前配置下的量级表现。默认 10 万请求、50 并发,命令集覆盖常见读写操作,也可以用参数收窄成单命令压测。
基本信息
| 命令 | redis-benchmark -h host -p port |
|---|---|
| 默认负载 | 10 万请求、50 并发,跑一组内置命令 |
| 关键参数 | -n 请求数、-c 并发数、-d 值大小、-t 命令集、-P 管道深度、-q 精简输出 |
| 输出内容 | 各命令的每秒请求数与延迟分布 |
| 定位 | 快速量级评估;要模拟业务分布应改用其他负载生成器 |
典型使用场景
- 基线记录:新实例或新机型上线时留下量级基线数据
- 配置对比:调整网络线程数、持久化策略前后各跑一轮
- 网络位置影响:压测机与实例的距离不同,结论差异很大
- 命令级对照:只压 SET 与 GET,判断读写路径是否对称
- 管道效果验证:用管道深度看批量化能提升多少吞吐
- 版本回归:升级后按同参数复跑,发现异常退化
常用压测
常用压测
redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 50 # 默认规模压测
redis-benchmark -t set,get -n 50000 -c 20 # 只压读写两条命令
redis-benchmark -t set -d 1024 -n 50000 # 指定 value 大小为 1KB
redis-benchmark -t get -P 16 -n 200000 # 管道深度 16,看批量收益
redis-benchmark -q # 只输出结果摘要
redis-benchmark --csv # 输出适合入表格的格式
redis-cli INFO stats | grep -E 'instantaneous_ops_per_sec' # 压测同时看服务端视角结果读法
| 输出项 | 含义 | 怎么用 |
|---|---|---|
| requests per second | 每秒完成的请求数 | 吞吐量级判断 |
| p50 延迟 | 中位延迟 | 代表常规体验 |
| p99 延迟 | 尾部延迟 | 比平均值更能反映真实体验 |
| 延迟分布行 | 按区间的直方分布 | 看是否存在长尾 |
| 百分比汇总 | 各分位延迟 | 不同配置之间的尾部对比 |
压测机本身也会成为瓶颈:CPU、网卡和单进程模型都会限制结果,压测之前先确认压力发生器还有余量。
不要对生产实例直接施加大压力:写入型命令会真的改数据,读命令也会占满主线程,影响面往往在测试开始后才显现。