redis学习-25- Redis Benchmark性能测试
·
25.Benchmark性能测试
-
为了解 Redis 在不同配置环境下的性能表现,Redis 提供了一种行性能测试工具 redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对 Redis 的性能测试。
-
性能测试的作用是让我们了解 Redis 服务器的性能优劣。在实际的业务场景中,性能测试是必不可少的。在业务系统上线之前,我们都需要清楚地了解 Redis 服务器的性能,从而避免发生某些意外情况,比如数据量过大会导致服务器宕机等。
-
执行测试命令,要在 Redis 的安装目录下执行,命令如下所示:
redis-benchmark [option] [option value]
- 其中 option 为可选参数, option value 为具体的参数值。 redis-benchmark 命令的可选参数如下所示:
| 参数选项 | 说明 | 默认值 |
|---|---|---|
| -h | 指定服务器主机名。 | 127.0.0.1 |
| -p | 指定服务器端口。 | |
| -s | 指定服务器 socket。 | |
| -c | 指定并发连接数 | 50 |
| -n | 指定请求的具体数量。 | 10000(50个线程的总和) |
| -d | 以字节的形式指定 SET/GET 值的数据大小。 | 2 |
| -k | 1 表示 keep alive;0 表示 reconnect,默认为 1。 | 1 |
| -r | SET/GET/INCR 使用随机 key, SADD 使用随机值。 | |
| -P | Pipeline 请求 | 1 |
| -q | 强制退出 Redis,仅显示 query/sec 值。 | |
| –csv | 以 CSV 格式输出。 | |
| -l | 生成循环,永久执行测试。 | |
| -t | 仅运行以逗号分隔的测试命令列表。 | |
| -I(大写i) | 空闲模式,打开 N 个空闲连接并等待连接。 |
- 在 Windows 系统下,其目录文件如图所示:

- Windows环境执行测试命令:在 Windows 10 系统环境下,同时执行了 10000 个命令来检测 Redis 服务器的性能,示例如下:
E:\software\Redis>redis-benchmark.exe -n 10000 -q
PING_INLINE: 46511.63 requests per second
PING_BULK: 39682.54 requests per second
#每秒执行42735.04个请求
SET: 42735.04 requests per second
GET: 47393.37 requests per second
INCR: 47619.05 requests per second
LPUSH: 41666.67 requests per second
RPUSH: 49019.61 requests per second
LPOP: 49019.61 requests per second
RPOP: 48780.49 requests per second
SADD: 48309.18 requests per second
HSET: 49261.09 requests per second
SPOP: 49504.95 requests per second
LPUSH (needed to benchmark LRANGE): 48780.49 requests per second
LRANGE_100 (first 100 elements): 27397.26 requests per second
LRANGE_300 (first 300 elements): 15873.02 requests per second
LRANGE_500 (first 450 elements): 11467.89 requests per second
LRANGE_600 (first 600 elements): 9115.77 requests per second
MSET (10 keys): 47393.37 requests per second
注意:若是 Linux 系统,其每秒钟执行的请求数量是 Windows 系统的好几倍。
- Linux 环境下,Redis 的性能测试结果,如下所示:
[root@VM-0-3-centos ~]# redis-benchmark -a xxxxx -n 10000 -q
PING_INLINE: 66225.17 requests per second, p50=0.423 msec
PING_MBULK: 68027.21 requests per second, p50=0.447 msec
#服务器每秒执行的请求数量
SET: 61728.39 requests per second, p50=0.447 msec
GET: 66225.17 requests per second, p50=0.431 msec
INCR: 63291.14 requests per second, p50=0.455 msec
LPUSH: 62500.00 requests per second, p50=0.407 msec
RPUSH: 65359.48 requests per second, p50=0.431 msec
LPOP: 66666.66 requests per second, p50=0.463 msec
RPOP: 61728.39 requests per second, p50=0.423 msec
SADD: 69930.07 requests per second, p50=0.447 msec
HSET: 58479.53 requests per second, p50=0.455 msec
SPOP: 66666.66 requests per second, p50=0.455 msec
ZADD: 54644.81 requests per second, p50=0.471 msec
ZPOPMIN: 59171.60 requests per second, p50=0.439 msec
LPUSH (needed to benchmark LRANGE): rps=5019.9 (overall: 54782.6) avg_msec=0.607 LPUSH (needed to benchmark LRANGE): 59880.24 requests per second, p50=0.471 msec
LRANGE_100 (first 100 elements): rps=12852.6 (overall: 30434.0) avg_msec=1.146 ( LRANGE_100 (first 100 elements): 32679.74 requests per second, p50=0.831 msec
LRANGE_300 (first 300 elements): rps=2968.3 (overall: 14666.7) avg_msec=2.121 (o LRANGE_300 (first 300 elements): rps=15648.0 (overall: 15481.7) avg_msec=2.013 ( LRANGE_300 (first 300 elements): rps=15698.4 (overall: 15580.5) avg_msec=2.083 ( LRANGE_300 (first 300 elements): 15384.62 requests per second, p50=1.911 msec
LRANGE_500 (first 500 elements): rps=6486.1 (overall: 10781.5) avg_msec=3.158 (o LRANGE_500 (first 500 elements): rps=10162.7 (overall: 10394.5) avg_msec=2.708 ( LRANGE_500 (first 500 elements): rps=9909.1 (overall: 10207.3) avg_msec=2.704 (o LRANGE_500 (first 500 elements): rps=10358.6 (overall: 10249.2) avg_msec=3.088 ( LRANGE_500 (first 500 elements): 10224.95 requests per second, p50=2.607 msec
LRANGE_600 (first 600 elements): rps=6162.7 (overall: 8724.7) avg_msec=3.128 (ov LRANGE_600 (first 600 elements): rps=8729.1 (overall: 8727.3) avg_msec=2.931 (ov LRANGE_600 (first 600 elements): rps=8605.6 (overall: 8682.4) avg_msec=3.046 (ov LRANGE_600 (first 600 elements): rps=8762.8 (overall: 8704.2) avg_msec=3.154 (ov LRANGE_600 (first 600 elements): 8710.80 requests per second, p50=2.919 msec
MSET (10 keys): 59880.24 requests per second, p50=0.623 msec
- 执行指定的测试命令 :带参数的命令,使用示例如下
CNCLUKZK@LAPTOP-HGE63E13 MINGW64 /e/software/Redis
$ redis-benchmark.exe -h 127.0.0.1 -p 6379 -n 10000 -t set,get,rpush -q
SET: 50000.00 requests per second
GET: 50251.26 requests per second
RPUSH: 37878.79 requests per second
- 如何进行性能分析,使用100个并发,总共请求100000次
[root@VM-0-3-centos ~]# redis-benchmark -a 1322330916 -c 100 -n 100000
...
====== SET ====== #10w个请求进行set写入测试
100000 requests completed in 1.71 seconds
#100个并发客户端
100 parallel clients
#每次写入3个字节
3 bytes payload
#只有一台服务器处理这些请求,测试单机性能
keep alive: 1
host configuration "save": 3600 1 300 100 60 10000
host configuration "appendonly": yes
multi-thread: no
#延迟百分比,一个请求处理过程及使用时间
Latency by percentile distribution:
0.000% <= 0.303 milliseconds (cumulative count 1)
50.000% <= 0.999 milliseconds (cumulative count 50380)
75.000% <= 1.303 milliseconds (cumulative count 75409)
87.500% <= 1.591 milliseconds (cumulative count 87663)
93.750% <= 1.903 milliseconds (cumulative count 93811)
96.875% <= 2.167 milliseconds (cumulative count 96962)
98.438% <= 2.423 milliseconds (cumulative count 98458)
99.219% <= 2.799 milliseconds (cumulative count 99223)
99.609% <= 3.199 milliseconds (cumulative count 99611)
99.805% <= 3.775 milliseconds (cumulative count 99806)
99.902% <= 5.007 milliseconds (cumulative count 99903)
99.951% <= 5.511 milliseconds (cumulative count 99952)
99.976% <= 5.743 milliseconds (cumulative count 99976)
99.988% <= 5.863 milliseconds (cumulative count 99988)
99.994% <= 5.919 milliseconds (cumulative count 99994)
99.997% <= 5.951 milliseconds (cumulative count 99997)
99.998% <= 5.975 milliseconds (cumulative count 99999)
99.999% <= 5.991 milliseconds (cumulative count 100000)
100.000% <= 5.991 milliseconds (cumulative count 100000)
#延迟的累积分布
Cumulative distribution of latencies:
0.000% <= 0.103 milliseconds (cumulative count 0)
0.001% <= 0.303 milliseconds (cumulative count 1)
0.029% <= 0.407 milliseconds (cumulative count 29)
0.083% <= 0.503 milliseconds (cumulative count 83)
1.643% <= 0.607 milliseconds (cumulative count 1643)
4.499% <= 0.703 milliseconds (cumulative count 4499)
10.197% <= 0.807 milliseconds (cumulative count 10197)
33.636% <= 0.903 milliseconds (cumulative count 33636)
51.101% <= 1.007 milliseconds (cumulative count 51101)
59.800% <= 1.103 milliseconds (cumulative count 59800)
68.475% <= 1.207 milliseconds (cumulative count 68475)
75.409% <= 1.303 milliseconds (cumulative count 75409)
80.703% <= 1.407 milliseconds (cumulative count 80703)
84.595% <= 1.503 milliseconds (cumulative count 84595)
88.159% <= 1.607 milliseconds (cumulative count 88159)
90.666% <= 1.703 milliseconds (cumulative count 90666)
92.561% <= 1.807 milliseconds (cumulative count 92561)
93.811% <= 1.903 milliseconds (cumulative count 93811)
95.103% <= 2.007 milliseconds (cumulative count 95103)
96.259% <= 2.103 milliseconds (cumulative count 96259)
99.562% <= 3.103 milliseconds (cumulative count 99562)
99.855% <= 4.103 milliseconds (cumulative count 99855)
99.913% <= 5.103 milliseconds (cumulative count 99913)
100.000% <= 6.103 milliseconds (cumulative count 100000)
#总结
Summary:
#吞吐量总结:每秒58513.75个请求
throughput summary: 58513.75 requests per second
latency summary (msec):
avg min p50 p95 p99 max
1.146 0.296 0.999 2.007 2.663 5.991
...
下一篇:redis学习-26- Redis分区技术和Pipeline管道技术
更多推荐


所有评论(0)