以下是关于 Redis 性能测试(Benchmark) 的系统讲解,涵盖 Redis 自带的 redis-benchmark
工具用法、测试参数解释、不同场景下的性能分析方法,以及生产环境的性能优化建议。
📚 目录
🧰 性能测试工具概览
Redis 提供内置命令行工具 redis-benchmark
,可用于模拟高并发读写操作,评估 Redis 的处理能力。
安装方式:随 Redis 源码一起编译安装,位于 src/redis-benchmark
。
🧪 redis-benchmark 命令详解
命令格式:
redis-benchmark [options]
常用参数:
参数 | 说明 |
---|---|
-h | Redis 服务器 IP(默认 127.0.0.1) |
-p | 端口(默认 6379) |
-a | 认证密码(如设置了 requirepass) |
-n | 请求总数(默认 100000) |
-c | 并发客户端数(默认 50) |
-d | 每个请求的数据字节大小(仅对 SET/GET 有效) |
-t | 测试指定命令(如 set,get,lpush ) |
--csv | 输出为 CSV 格式 |
--cluster | 用于 Redis Cluster 模式测试 |
--threads | 启用多线程压测(Redis 7.0+ 支持) |
🧾 常用测试示例
1. 测试所有命令(默认 100000 请求,50 并发)
redis-benchmark
2. 测试 GET/SET 性能,数据为 256 字节
redis-benchmark -t get,set -d 256
3. 使用 100 并发、100 万请求测试 SET 命令
redis-benchmark -t set -n 1000000 -c 100 -d 128
4. 带认证测试
redis-benchmark -a yourpassword -t set,get
5. 输出为 CSV
redis-benchmark -t set,get --csv
📊 参数解释与输出分析
示例输出:
====== SET ======
100000 requests completed in 1.23 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.95% <= 1 milliseconds
100.00% <= 2 milliseconds
81300.81 requests per second
关键指标:
指标 | 含义 |
---|---|
requests per second | 每秒处理的请求数,越高越好 |
<= X milliseconds | 表示 X 毫秒以内完成的请求占比 |
parallel clients | 并发客户端数 |
completed in | 总耗时 |
📍 不同场景的测试策略
场景 | 推荐测试方式 |
---|---|
大数据写入 | 增加 -d 数据大小,测试 set |
高并发读写混合 | 设置 -c >100,测试 get,set |
延迟敏感业务 | 关注延迟分布(<= X ms 比例) |
集群模式 | 使用 --cluster 指定节点测试 |
🧠 真实生产场景模拟建议
- ✅ 搭配真实数据量级(如 1KB~10KB)
- ✅ 使用
-P
管道化参数测试批量写性能 - ✅ 结合压力测试工具(如 memtier_benchmark)更真实模拟请求分布
示例(memtier):
memtier_benchmark -s 127.0.0.1 -p 6379 --ratio=1:9 --clients=100 --threads=4
⚠️ 性能测试注意事项
- 📌 避免本地 Redis + 本地 Benchmark 测试:可能受本机性能影响
- 📌 避免测试期间运行持久化操作:如
BGSAVE
会影响结果 - 📌 生产环境建议使用隔离机器测试
- 📌 观察 Redis CPU、内存、I/O 利用率
可配合 top
、iostat
、redis-cli info
做多维分析。
📎 参考资料
如你需要我根据你的 Redis 部署环境生成一份完整的压测脚本,或希望测试某一特定业务模型(如订单写入、排行榜读取等),可以继续告诉我,我来帮你设计定制化方案。是否需要我为你准备一个性能测试脚本模板?
发表回复