redis-benchmark [option] [option value]
redis 性能测试工具可选参数如下所示:
序号 | 选项 | 描述 | 默认值 |
---|---|---|---|
1 | -h | 指定服务器主机名 | 127.0.0.1 |
2 | -p | 指定服务器端口 | 6379 |
3 | -s | 指定服务器 socket | |
4 | -c | 指定并发连接数 | 50 |
5 | -n | 指定请求数 | 10000 |
6 | -d | 以字节的形式指定 SET/GET 值的数据大小 | 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用随机 key, SADD 使用随机值 | |
9 | -P | 通过管道传输 请求 | 1 |
10 | -q | 强制退出 redis。仅显示 query/sec 值 | |
11 | –csv | 以 CSV 格式输出 | |
12 | -l | 生成循环,永久执行测试 | |
13 | -t | 仅运行以逗号分隔的测试命令列表。 | |
14 | -I | Idle 模式。仅打开 N 个 idle 连接并等待。 |
# 测试100个并发连接
# 一个并发连接有100000个请求
[root@node-a ~]# redis-benchmark -h 1.1.1.1 -p 6379 -c 100 -n 100000 -q
PING_INLINE: 94696.97 requests per second
PING_BULK: 116550.12 requests per second
SET: 121654.50 requests per second
GET: 121359.23 requests per second
INCR: 121065.38 requests per second
LPUSH: 122399.02 requests per second
RPUSH: 121802.68 requests per second
LPOP: 119189.52 requests per second
RPOP: 121654.50 requests per second
SADD: 121065.38 requests per second
HSET: 121802.68 requests per second
SPOP: 122399.02 requests per second
LPUSH (needed to benchmark LRANGE): 122850.12 requests per second
LRANGE_100 (first 100 elements): 59701.50 requests per second
LRANGE_300 (first 300 elements): 20088.39 requests per second
LRANGE_500 (first 450 elements): 13825.52 requests per second
LRANGE_600 (first 600 elements): 10363.77 requests per second
# 每秒处理87719个请求
MSET (10 keys): 87719.30 requests per second
[root@node-a ~]# redis-benchmark -h 1.1.1.1 -p 6379 -c 100 -n 100000 -t set
====== SET ======
10000 requests completed in 0.11 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.08% <= 1 milliseconds
100.00% <= 1 milliseconds
90090.09 requests per second
[root@node-a ~]# redis-benchmark -h 1.1.1.1 -p 6379 -c 100 -n 100000 -t get
====== GET ======
100000 requests completed in 1.03 seconds
100 parallel clients
3 bytes payload
keep alive: 1
99.87% <= 1 milliseconds
100.00% <= 1 milliseconds
96711.80 requests per second
默认情况下,每个客户端都是在一个请求完成之后才发送下一个请求 (benchmark 会模拟 50 个客户端除非使用 -c 指定特别的数量), 这意味着服务器几乎是按顺序读取每个客户端的命令。Also RTT is payed as well.
真实世界会更复杂,Redis 支持 /topics/pipelining,使得可以一次性执行多条命令成为可能。 Redis pipelining 可以提高服务器的 TPS。 下面这个案例是在 Macbook air 11” 上使用 pipelining 组织 16 条命令的测试范例:
[root@node-a ~]# redis-benchmark -h 1.1.1.1 -p 6379 -n 100000 -t set,get -P 16
====== SET ======
100000 requests completed in 0.14 seconds
50 parallel clients
3 bytes payload
keep alive: 1
54.66% <= 1 milliseconds
100.00% <= 1 milliseconds
740740.69 requests per second
====== GET ======
100000 requests completed in 0.09 seconds
50 parallel clients
3 bytes payload
keep alive: 1
98.96% <= 1 milliseconds
100.00% <= 1 milliseconds
1063829.88 requests per second
有几个因素直接决定 Redis 的性能。它们能够改变基准测试的结果, 所以我们必须注意到它们。一般情况下,Redis 默认参数已经可以提供足够的性能, 不需要调优。
任何基准测试的一个重要目标是获得可重现的结果,这样才能将此和其他测试进行对比。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。