Redis的数据存在内存中,读写性能高。读的速度是110000次/s,写的速度是81000次/s。但是,这并不意味着你搭建的redis服务性能就是这样的。你必须做性能测试,才能知道你搭建的服务性能如何(或者领导问你时,你才能够说有理有据的说明白)。Redis服务搭建后,也是需要进行性能测试,了解了其性能后,满足项目需求才能投入使用的。
Redis提供了专门用来做测试的可执行文件redis-benchmark
下面就讲几个简单的测试命令
1、模拟100个并发连接,100000个请求,命令:./redis-benchmark -h 192.168.0.24 -p 8001 -c 100 -n 100000,这个命令测试是非常重要的,主要是检测服务器的性能,返回结果为各种类型数据的存取速度。
[root@*** src]# ./redis-benchmark -h 192.168.0.24 -p 8001 -c 100 -n 100000
====== PING_INLINE ======
100000 requests completed in 0.83 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.38% <= 1 milliseconds
99.68% <= 2 milliseconds
99.78% <= 3 milliseconds
99.80% <= 4 milliseconds
99.85% <= 5 milliseconds
99.90% <= 20 milliseconds
99.98% <= 21 milliseconds
100.00% <= 21 milliseconds
120048.02 requests per second
====== PING_BULK ======
100000 requests completed in 0.83 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.06% <= 1 milliseconds
99.20% <= 2 milliseconds
99.58% <= 3 milliseconds
99.70% <= 4 milliseconds
99.75% <= 5 milliseconds
99.80% <= 20 milliseconds
99.90% <= 21 milliseconds
99.90% <= 22 milliseconds
100.00% <= 22 milliseconds
120481.93 requests per second
====== SET ======
100000 requests completed in 0.86 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.04% <= 1 milliseconds
99.70% <= 2 milliseconds
99.74% <= 3 milliseconds
99.90% <= 5 milliseconds
100.00% <= 5 milliseconds
116144.02 requests per second
====== GET ======
100000 requests completed in 1.20 seconds
100 parallel clients
3 bytes payload
keep alive: 1
95.69% <= 1 milliseconds
96.56% <= 2 milliseconds
97.00% <= 3 milliseconds
97.11% <= 8 milliseconds
97.15% <= 9 milliseconds
97.78% <= 10 milliseconds
98.73% <= 11 milliseconds
99.09% <= 12 milliseconds
99.40% <= 14 milliseconds
99.50% <= 17 milliseconds
99.60% <= 20 milliseconds
99.95% <= 21 milliseconds
100.00% <= 21 milliseconds
83125.52 requests per second
====== INCR ======
100000 requests completed in 1.09 seconds
100 parallel clients
3 bytes payload
keep alive: 1
97.39% <= 1 milliseconds
97.61% <= 2 milliseconds
97.93% <= 3 milliseconds
98.33% <= 4 milliseconds
98.40% <= 9 milliseconds
98.78% <= 10 milliseconds
99.07% <= 11 milliseconds
99.30% <= 19 milliseconds
99.41% <= 20 milliseconds
99.72% <= 21 milliseconds
99.97% <= 22 milliseconds
100.00% <= 22 milliseconds
91491.30 requests per second
====== LPUSH ======
100000 requests completed in 1.34 seconds
100 parallel clients
3 bytes payload
keep alive: 1
94.82% <= 1 milliseconds
95.37% <= 2 milliseconds
95.68% <= 3 milliseconds
96.14% <= 4 milliseconds
96.30% <= 7 milliseconds
96.43% <= 8 milliseconds
96.67% <= 9 milliseconds
97.84% <= 10 milliseconds
98.92% <= 11 milliseconds
99.20% <= 12 milliseconds
99.40% <= 13 milliseconds
99.50% <= 20 milliseconds
99.70% <= 21 milliseconds
99.80% <= 22 milliseconds
100.00% <= 22 milliseconds
74794.31 requests per second
====== RPUSH ======
100000 requests completed in 1.35 seconds
100 parallel clients
3 bytes payload
keep alive: 1
95.05% <= 1 milliseconds
95.56% <= 2 milliseconds
95.93% <= 3 milliseconds
96.49% <= 4 milliseconds
96.62% <= 5 milliseconds
96.70% <= 7 milliseconds
96.80% <= 8 milliseconds
96.81% <= 9 milliseconds
97.86% <= 10 milliseconds
98.70% <= 11 milliseconds
98.80% <= 12 milliseconds
99.00% <= 19 milliseconds
99.20% <= 20 milliseconds
99.54% <= 21 milliseconds
99.80% <= 22 milliseconds
99.90% <= 25 milliseconds
99.93% <= 26 milliseconds
100.00% <= 26 milliseconds
74183.98 requests per second
====== LPOP ======
100000 requests completed in 1.08 seconds
100 parallel clients
3 bytes payload
keep alive: 1
97.69% <= 1 milliseconds
98.16% <= 2 milliseconds
98.62% <= 3 milliseconds
98.97% <= 9 milliseconds
99.05% <= 10 milliseconds
99.07% <= 11 milliseconds
99.30% <= 19 milliseconds
99.40% <= 20 milliseconds
99.70% <= 21 milliseconds
100.00% <= 21 milliseconds
92506.94 requests per second
====== RPOP ======
100000 requests completed in 1.12 seconds
100 parallel clients
3 bytes payload
keep alive: 1
97.03% <= 1 milliseconds
97.31% <= 2 milliseconds
97.42% <= 3 milliseconds
97.62% <= 4 milliseconds
97.70% <= 9 milliseconds
98.27% <= 10 milliseconds
99.51% <= 11 milliseconds
99.80% <= 16 milliseconds
99.90% <= 21 milliseconds
100.00% <= 21 milliseconds
89047.20 requests per second
====== SADD ======
100000 requests completed in 1.03 seconds
100 parallel clients
3 bytes payload
keep alive: 1
97.60% <= 1 milliseconds
98.39% <= 2 milliseconds
98.60% <= 3 milliseconds
98.70% <= 6 milliseconds
98.73% <= 7 milliseconds
98.80% <= 9 milliseconds
98.90% <= 10 milliseconds
99.10% <= 14 milliseconds
99.16% <= 15 milliseconds
99.20% <= 17 milliseconds
99.28% <= 18 milliseconds
99.30% <= 19 milliseconds
99.42% <= 20 milliseconds
99.79% <= 21 milliseconds
99.80% <= 22 milliseconds
99.90% <= 23 milliseconds
99.90% <= 25 milliseconds
100.00% <= 25 milliseconds
96711.80 requests per second
====== HSET ======
100000 requests completed in 1.32 seconds
100 parallel clients
3 bytes payload
keep alive: 1
95.31% <= 1 milliseconds
95.84% <= 2 milliseconds
96.43% <= 3 milliseconds
96.80% <= 9 milliseconds
97.42% <= 10 milliseconds
98.16% <= 11 milliseconds
98.53% <= 12 milliseconds
98.66% <= 13 milliseconds
98.90% <= 14 milliseconds
99.00% <= 19 milliseconds
99.07% <= 20 milliseconds
99.72% <= 21 milliseconds
100.00% <= 21 milliseconds
75757.57 requests per second
====== SPOP ======
100000 requests completed in 0.84 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.33% <= 1 milliseconds
99.60% <= 9 milliseconds
99.63% <= 10 milliseconds
99.82% <= 11 milliseconds
99.90% <= 19 milliseconds
100.00% <= 19 milliseconds
119047.62 requests per second
====== LPUSH (needed to benchmark LRANGE) ======
100000 requests completed in 1.14 seconds
100 parallel clients
3 bytes payload
keep alive: 1
97.28% <= 1 milliseconds
98.40% <= 2 milliseconds
98.50% <= 9 milliseconds
98.77% <= 10 milliseconds
99.00% <= 11 milliseconds
99.10% <= 19 milliseconds
99.32% <= 20 milliseconds
99.79% <= 21 milliseconds
99.90% <= 22 milliseconds
100.00% <= 22 milliseconds
87336.24 requests per second
====== LRANGE_100 (first 100 elements) ======
100000 requests completed in 3.54 seconds
100 parallel clients
3 bytes payload
keep alive: 1
3.43% <= 1 milliseconds
75.33% <= 2 milliseconds
85.97% <= 3 milliseconds
87.46% <= 4 milliseconds
88.41% <= 5 milliseconds
88.92% <= 6 milliseconds
89.28% <= 7 milliseconds
89.49% <= 8 milliseconds
90.02% <= 9 milliseconds
90.93% <= 10 milliseconds
93.67% <= 11 milliseconds
95.58% <= 12 milliseconds
96.63% <= 13 milliseconds
97.21% <= 14 milliseconds
97.50% <= 15 milliseconds
97.60% <= 17 milliseconds
97.66% <= 18 milliseconds
97.85% <= 19 milliseconds
97.96% <= 20 milliseconds
98.19% <= 21 milliseconds
99.01% <= 22 milliseconds
99.61% <= 23 milliseconds
99.94% <= 24 milliseconds
100.00% <= 24 milliseconds
28248.59 requests per second
====== LRANGE_300 (first 300 elements) ======
100000 requests completed in 7.97 seconds
100 parallel clients
3 bytes payload
keep alive: 1
0.40% <= 1 milliseconds
1.19% <= 2 milliseconds
21.17% <= 3 milliseconds
43.09% <= 4 milliseconds
65.67% <= 5 milliseconds
77.25% <= 6 milliseconds
79.06% <= 7 milliseconds
80.17% <= 8 milliseconds
80.58% <= 9 milliseconds
81.22% <= 10 milliseconds
82.88% <= 11 milliseconds
85.57% <= 12 milliseconds
89.22% <= 13 milliseconds
92.55% <= 14 milliseconds
95.05% <= 15 milliseconds
96.56% <= 16 milliseconds
97.36% <= 17 milliseconds
97.74% <= 18 milliseconds
97.87% <= 19 milliseconds
98.00% <= 20 milliseconds
98.14% <= 21 milliseconds
98.25% <= 22 milliseconds
98.55% <= 23 milliseconds
98.92% <= 24 milliseconds
99.36% <= 25 milliseconds
99.68% <= 26 milliseconds
99.84% <= 27 milliseconds
99.94% <= 28 milliseconds
99.98% <= 29 milliseconds
100.00% <= 29 milliseconds
12550.20 requests per second
====== LRANGE_500 (first 450 elements) ======
100000 requests completed in 7.99 seconds
100 parallel clients
3 bytes payload
keep alive: 1
0.00% <= 1 milliseconds
0.09% <= 2 milliseconds
1.36% <= 3 milliseconds
21.30% <= 4 milliseconds
41.71% <= 5 milliseconds
62.22% <= 6 milliseconds
82.82% <= 7 milliseconds
98.16% <= 8 milliseconds
98.75% <= 9 milliseconds
99.22% <= 10 milliseconds
99.30% <= 11 milliseconds
99.34% <= 12 milliseconds
99.38% <= 13 milliseconds
99.42% <= 14 milliseconds
99.45% <= 15 milliseconds
99.48% <= 16 milliseconds
99.52% <= 17 milliseconds
99.54% <= 19 milliseconds
99.56% <= 20 milliseconds
99.58% <= 21 milliseconds
99.60% <= 22 milliseconds
99.62% <= 23 milliseconds
99.69% <= 24 milliseconds
99.76% <= 25 milliseconds
99.79% <= 26 milliseconds
99.81% <= 27 milliseconds
99.86% <= 28 milliseconds
99.94% <= 29 milliseconds
99.99% <= 30 milliseconds
100.00% <= 30 milliseconds
12509.38 requests per second
====== LRANGE_600 (first 600 elements) ======
100000 requests completed in 11.78 seconds
100 parallel clients
3 bytes payload
keep alive: 1
0.09% <= 1 milliseconds
0.50% <= 2 milliseconds
1.02% <= 3 milliseconds
4.55% <= 4 milliseconds
18.43% <= 5 milliseconds
32.33% <= 6 milliseconds
45.83% <= 7 milliseconds
59.54% <= 8 milliseconds
73.40% <= 9 milliseconds
87.05% <= 10 milliseconds
89.11% <= 11 milliseconds
90.44% <= 12 milliseconds
91.29% <= 13 milliseconds
92.05% <= 14 milliseconds
92.82% <= 15 milliseconds
93.70% <= 16 milliseconds
94.61% <= 17 milliseconds
95.48% <= 18 milliseconds
96.29% <= 19 milliseconds
96.90% <= 20 milliseconds
97.22% <= 21 milliseconds
97.41% <= 22 milliseconds
97.63% <= 23 milliseconds
97.88% <= 24 milliseconds
98.16% <= 25 milliseconds
98.50% <= 26 milliseconds
98.85% <= 27 milliseconds
99.13% <= 28 milliseconds
99.30% <= 29 milliseconds
99.40% <= 30 milliseconds
99.51% <= 31 milliseconds
99.65% <= 32 milliseconds
99.77% <= 33 milliseconds
99.92% <= 34 milliseconds
99.97% <= 35 milliseconds
99.98% <= 36 milliseconds
99.98% <= 37 milliseconds
100.00% <= 37 milliseconds
8488.24 requests per second
====== MSET (10 keys) ======
100000 requests completed in 1.20 seconds
100 parallel clients
3 bytes payload
keep alive: 1
87.50% <= 1 milliseconds
98.24% <= 2 milliseconds
98.53% <= 3 milliseconds
99.00% <= 4 milliseconds
99.18% <= 5 milliseconds
99.20% <= 7 milliseconds
99.30% <= 9 milliseconds
99.42% <= 10 milliseconds
99.70% <= 21 milliseconds
99.90% <= 24 milliseconds
100.00% <= 24 milliseconds
83682.01 requests per second
2、测试单个(或几个)指令操作性能,eg:测试set、get性能,命令:./redis-benchmark -h 192.168.0.24 -p 8001 -t set,get -n 50000 -q。当然你也可以把set、get换成其它指令(比如lpush、rpush、sadd等)来测试对应指令的性能
[root@*** src]# ./redis-benchmark -h 192.168.0.24 -p 8001 -t set,get -n 50000 -q
SET: 93808.63 requests per second
GET: 124688.28 requests per second
3、测试存取大小为指定字节的数据包性能,比如,你公司业务中存取1000字节的操作特别多,这个时候你就需要对1000个字节的数据包存取来做一个单独的测试。命令:./redis-benchmark -h 192.168.0.24 -p 8001 -q -d 1000
[root@*** src]# ./redis-benchmark -h 192.168.0.24 -p 8001 -q -d 1000
PING_INLINE: 87950.75 requests per second
PING_BULK: 130718.95 requests per second
SET: 89365.51 requests per second
GET: 110375.27 requests per second
INCR: 95969.28 requests per second
LPUSH: 93808.63 requests per second
RPUSH: 97943.19 requests per second
LPOP: 105932.20 requests per second
RPOP: 104821.80 requests per second
SADD: 129032.27 requests per second
HSET: 118623.96 requests per second
SPOP: 133333.33 requests per second
LPUSH (needed to benchmark LRANGE): 79681.27 requests per second
LRANGE_100 (first 100 elements): 5158.89 requests per second
LRANGE_300 (first 300 elements): 1682.45 requests per second
LRANGE_500 (first 450 elements): 1092.48 requests per second
LRANGE_600 (first 600 elements): 809.06 requests per second
MSET (10 keys): 45558.09 requests per second
4、测试某些数值存取性能,比如:你接手的项目对短信验证码使用非常频繁,并且这个业务会用到redis缓存,那么你也有必要对验证码的存取做性能测试,命令:./redis-benchmark -h 192.168.0.24 -p 8001 -n 100000 -q script load "redis.call("set","code","124574")"
[root@*** src]# ./redis-benchmark -h 192.168.0.24 -p 8001 -n 100000 -q script load "redis.call("set","code","124574")"
script load redis.call(set,code,124574): 110619.47 requests per second
[root@*** src]# ./redis-benchmark -h 192.168.0.24 -p 8001 -n 100000 -q script load "redis.call("get","code","124574")"
script load redis.call(get,code,124574): 100300.91 requests per second
做完性能测试后,记得将测试数据保存到文档中。
如果有写的不对的地方,请大家多多批评指正,非常感谢!