Skip to content

Redis - 基准测试

Redis 包含一个内置的基准测试工具 redis-benchmark,旨在模拟从多个并行客户端运行多个命令。它提供了一种标准化的方式来衡量 Redis 实例在合成负载下的性能。

在终端中运行基准测试工具的基本语法是:

redis-benchmark [options]

不带任何选项执行 redis-benchmark 将运行一套标准测试,使用 50 个并行客户端和总计 100,000 个请求。

$ redis-benchmark
====== PING_INLINE ====== (行内 PING)
100000 个请求在 0.70 秒内完成
50 个并行客户端
3 字节载荷
保持连接: 1
99.68% <= 1 毫秒
100.00% <= 1 毫秒
142653.36 次请求/秒
====== PING_BULK ====== (批量 PING)
100000 个请求在 0.69 秒内完成
50 个并行客户端
3 字节载荷
保持连接: 1
99.78% <= 1 毫秒
100.00% <= 1 毫秒
144717.80 次请求/秒
...(输出继续显示 SET、GET、LPUSH 等)...
====== MSET (10 个键) ======
100000 个请求在 1.15 秒内完成
50 个并行客户端
3 字节载荷
保持连接: 1
96.48% <= 1 毫秒
99.88% <= 2 毫秒
100.00% <= 2 毫秒
87108.02 次请求/秒

你可以使用各种选项自定义基准测试,以更好地反映应用程序的工作负载。例如,我们来测试仅带有更大数据载荷的 SET 和 GET 命令。

# -n 100000:总计 100,000 个请求
# -c 100:100 个并行客户端
# -d 256:SET/GET 命令的数据载荷为 256 字节
# -t get,set:仅运行 GET 和 SET 测试
# -q:安静模式,只显示请求/秒
$ redis-benchmark -n 100000 -c 100 -d 256 -t get,set -q
SET: 121951.22 requests per second
GET: 123001.23 requests per second

下表列出了 redis-benchmark 最常用的选项。

选项描述默认值
-h 服务器主机名。127.0.0.1
-p 服务器端口。6379
-a 认证密码。无
-c 并行连接(客户端)数量。50
-n 要执行的总请求数。100000
-d SET/GET 值的字节数据大小。3
-t 要运行的测试列表,逗号分隔(例如 set,get,lpush)。所有测试
-P 流水线处理 个请求。使用 1 禁用流水线。1
-k 使用持久连接(1=是,0=否)。1
-r 从大小为 的键空间中为 SET/GET/INCR 使用随机键。未设置
-q安静模式。只显示最终的查询/秒总结。已禁用
—csv以 CSV 格式输出结果。已禁用
  • 切勿在生产环境运行: redis-benchmark 可能会使 CPU 和网络饱和,严重影响你线上应用程序的性能。始终在与生产环境具有相同硬件和网络配置的专用测试服务器上运行它。
  • 模拟实际工作负载: 默认基准测试是通用的。使用 -t、-d 和 -c 选项来模拟应用程序特定的命令模式、数据大小和并发级别,以获得更准确的评估。
  • 测试流水线: 使用 -P 选项来查看流水线带来的显著性能提升。例如,-P 16 将以 16 个命令为一批发送。
  • 它是一个基线: 基准测试结果是一个基线,而不是真实世界性能的绝对保证。应用程序逻辑、网络波动和其他因素都会产生影响。使用它来比较配置、硬件或 Redis 版本。