以下是关于 Redis 性能测试(Benchmark) 的系统讲解,涵盖 Redis 自带的 redis-benchmark 工具用法、测试参数解释、不同场景下的性能分析方法,以及生产环境的性能优化建议。


📚 目录

  1. 性能测试工具概览
  2. redis-benchmark 命令详解
  3. 常用测试示例
  4. 参数解释与输出分析
  5. 不同场景的测试策略
  6. 真实生产场景模拟建议
  7. 性能测试中的注意事项
  8. 参考资料

🧰 性能测试工具概览

Redis 提供内置命令行工具 redis-benchmark,可用于模拟高并发读写操作,评估 Redis 的处理能力。

安装方式:随 Redis 源码一起编译安装,位于 src/redis-benchmark


🧪 redis-benchmark 命令详解

命令格式:

redis-benchmark [options]

常用参数:

参数说明
-hRedis 服务器 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 利用率

可配合 topiostatredis-cli info 做多维分析。


📎 参考资料


如你需要我根据你的 Redis 部署环境生成一份完整的压测脚本,或希望测试某一特定业务模型(如订单写入、排行榜读取等),可以继续告诉我,我来帮你设计定制化方案。是否需要我为你准备一个性能测试脚本模板?