redis-benchmark可以为Redis做基准性能测试,它提供了很多选项帮助开发和运维人员测试Redis的相关性能
-c
-c(clients)选项代表客户端的并发量(默认50)
-n
-n(num)选项代表客户端请求数量(默认100000)
例如测试100个客户端一共请求20000次
[root@vmzq1l0l ~]# redis-benchmark -c 100 -n 20000
redis-benchmark会对各类数据结构的命令进行测试,并给出性能指标
====== MSET (10 keys) ======
20000 requests completed in 0.28 seconds
100 parallel clients
3 bytes payload
keep alive: 1
51.86% <= 1 milliseconds
93.78% <= 2 milliseconds
97.22% <= 3 milliseconds
98.67% <= 4 milliseconds
99.65% <= 5 milliseconds
99.87% <= 7 milliseconds
99.92% <= 8 milliseconds
100.00% <= 8 milliseconds
70921.98 requests per second
上面一共执行了20000次get操作,在0.28秒完成,每个请求数据量是3个字节,51.89%的命令执行时间小于1毫秒,···,99.92%的命令执行时间小于8毫秒,Redis每秒可以处理70921.98次get请求
-q
-q选项仅仅显示redis-benchmark的requests per second信息
-r
在一个空的Redis上执行了redis-benchmark会发现只有3个键
127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "mylist"
3) "key:__rand_int__"
如果想向Redis插入更多的键,可以执行使用-r(random)选项,可以向Redis插入更多随机的键
[root@vmzq1l0l ~]# redis-benchmark -c 100 -n 20000 -r 10000
-r选项会在key、counter键上加一个12位的后缀,-r10000代表只对后四位做随机处理(-r不是随机数的个数)。例如上面操作后,key的数量和结果结构如下
127.0.0.1:6379> dbsize
(integer) 18641
127.0.0.1:6379> scan 0
1) "14336"
2) 1) "key:000000004580"
2) "key:000000004519"
…
10) "key:000000002113"
-P
-P选项代表每个请求pipeline的数据量(默认为1)
-k
-k选项代表客户端是否使用keepalive,1为使用,0为不使用,默认值为1
-t
-t选项可以对指定命令进行基准测试
[root@vmzq1l0l ~]# redis-benchmark -t get,set -q
SET: 59453.03 requests per second
GET: 60901.34 requests per second
–csv
–csv选项会将结果按照csv格式输出,便于后续处理,如导出到Excel等
[root@vmzq1l0l ~]# redis-benchmark -t get,set -q --csv
"SET","63532.40"
"GET","81967.21"