Redis 之父 Salvatore 就说过:“通过执行GET/SET命令来测试Redis就像在雨天检测法拉利的雨刷清洁镜子的效果”。 很多时候人们跑到我这里,他们想知道为什么自己的Redis-Benchmark统计的结果低于最优结果 。 但我们必须要把各种不同的真实情况考虑进来,例如:
- 可能受到哪些客户端运行环境的限制?
- 是同一个版本号吗?
- 测试环境中的表现与应用将要运行的环境是否一致?
Redis-Benchmark的测试结果提供了一个保证你的 Redis-Server 不会运行在非正常状态下的基准点,但是你永远不要把它作为一个真实的“压力测试”。压力测试需要反应出应用的运行方式,并且需要一个尽可能的和生产相似的环境。
# redis做压测可以用自带的redis-benchmark工具
redis 性能测试的基本命令如下:
代码语言:javascript复制redis-benchmark [option] [option value]
redis-benchmark -h 192.168.0.231 -p 27000 -c 50 -n 10000 -t get
-c表示连接数
-n表示请求数
更多参数请输入 --help 查看~
压测需要一段时间,因为它需要依次压测多个命令的结果,如:get、set、incr、lpush等等,所以我们需要耐心等待
如果只需要压测某个命令,如:get,那么可以在以上的命令后加一个参数-t(红色部分):
redis-benchmark -h 127.0.0.1 -p 6086 -c 50 -n 10000 -t get
注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。
# 实例
(经实践redis4在其src目录下执行,redis5在其安装目录下执行即可) 以下实例同时执行 10000 个请求来检测性能:
代码语言:javascript复制[root@0b4ca1896e4e redis-5.0.8]# redis-benchmark -h 192.168.0.231 -p 27000 -c 50 -n 10000 -t get
====== GET ======
10000 requests completed in 0.21 seconds //在0.21秒内完成10000个请求
50 parallel clients //50个并行客户端
3 bytes payload //3字节有效载荷
keep alive: 1 //保持活力:1
98.73% <= 1 milliseconds //毫秒
99.51% <= 5 milliseconds
99.58% <= 6 milliseconds
99.72% <= 7 milliseconds
99.85% <= 8 milliseconds
99.99% <= 9 milliseconds
100.00% <= 9 milliseconds
46728.97 requests per second
[root@localhost src]# pwd
/home/summer/redis-4.0.11/src
[root@localhost src]# ./redis-benchmark -h 192.168.0.90 -p 27000 -c 50 -n 10000 -t get
====== GET ======
10000 requests completed in 0.20 seconds
50 parallel clients
3 bytes payload
keep alive: 1
89.75% <= 1 milliseconds
99.08% <= 2 milliseconds
100.00% <= 2 milliseconds
49504.95 requests per second