# 一:前言
redis-benchmark 可以为Redis做基准性能测试,提供了很多选项帮助开发和运维人员测试Redis的相关性能
-c(clients):客户端的并发数量(默认是50) -n<requests>(num):客户端请求总数(默认是100_000) -q:仅仅显示redis-benchmark的requests per second信息 -r(random):插入随机键,控制命令,非个数 -P:每个请求pipeline的数据量(默认为1) -k<boolean>:客户端是否使用keepalive,1为使用,0为不使用,默认值为1 -t:可以对指定命令进行基准测试 --csv:会将结果按照csv格式输出
## -c -n
### 100个客户端同时请求Redis,一共执行20000次。
> redis-benchmark -c 100 -n 20000
====== GET ======
20000 requests completed in 0.27 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.11% <= 1 milliseconds
100.00% <= 1 milliseconds
73529.41 requests per second
### 上面一共执行了20000次get操作,在0.27秒完成,每个请求数据量是3个字节,99.11%的命令执行时间小于1毫秒,Redis每秒可以处理73529.41次get请求。
## -q
redis-benchmark -c 100 -n 20000 -q
PING_INLINE: 74349.45 requests per second
PING_BULK: 68728.52 requests per second
SET: 71174.38 requests per second…
LRANGE_500 (first 450 elements): 11299.44 requests per second
LRANGE_600 (first 600 elements): 9319.67 requests per second
MSET (10 keys): 70671.38 requests per second
## -r
### 执行redis-benchmark,默认只新增三个随机键
> dbsize (integer)
3
> keys *
1) "counter:__rand_int__"
2) "mylist"
3) "key:__rand_int__"
### 使用-r选项,会在key、counter键上加一个12位的后缀
### -r 10000代表只对后四位做随机处理(-r不是随机数的个数)
> redis-benchmark -c 100 -n 20000 -r 10000
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"
## -t
> redis-benchmark -t get,set -q
SET: 98619.32 requests per second
GET: 97560.98 requests per second
## --csv
redis-benchmark -t get,set --csv
"SET","81300.81"
"GET","79051.38"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 二:参考文献
- 《Redis深度历险:核心原理和应用实践 - 钱文品》
- 《Redis 开发与运维 - 付磊、张益军》
- 官方文档 (opens new window)