redis压力测试工具 - redis-benchmark

redis-benchmark使用参数介绍

Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序)。你可以使用 redis-benchmark -h 来查看基准参数。

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-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 <numreq> 请求1
10-q强制退出 redis。仅显示 query/sec 值
11--csv以 CSV 格式输出
12-l(L 的小写字母)生成循环,永久执行测试
13-t仅运行以逗号分隔的测试命令列表。
14-I(i 的大写字母)Idle 模式。仅打开 N 个 idle 连接并等待。

压测示例

压测需要一段时间,因为它需要依次压测多个命令的结果,如:get、set、incr、lpush等等,所以我们需要耐心等待,如果只需要压测某个命令,如:set,那么可以在以上的命令后加一个参数-t:

示例1:

redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 50 -t set

 ====== SET ======
   100000 requests completed in 0.40 seconds           ## 0.4秒处理了100000个请求
   50 parallel clients                                 ## 50个并发
   3 bytes payload                                     ## 每次存取3 byte
   keep alive: 1
   host configuration "save": 3600 1 300 100 60 10000
   host configuration "appendonly": no
   multi-thread: no
 ​
 22.96% <= 0.1 milliseconds
 99.96% <= 0.2 milliseconds
 100.00% <= 0.2 milliseconds
 253164.55 requests per second

这样看起来数据很多,如果我们只想看最终的结果,可以带上参数-q,完整的命令如下:

示例2:

redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 50 -q

 PING_INLINE: 218818.39 requests per second
 PING_BULK: 250000.00 requests per second
 SET: 251256.28 requests per second
 GET: 250626.58 requests per second
 INCR: 250626.58 requests per second
 LPUSH: 252525.25 requests per second
 RPUSH: 252525.25 requests per second
 LPOP: 251889.16 requests per second
 RPOP: 251889.16 requests per second
 SADD: 253164.55 requests per second
 HSET: 255754.47 requests per second
 SPOP: 252525.25 requests per second
 ZADD: 256410.27 requests per second
 ZPOPMIN: 253164.55 requests per second
 LPUSH (needed to benchmark LRANGE): 255102.05 requests per second
 LRANGE_100 (first 100 elements): 102354.15 requests per second
 LRANGE_300 (first 300 elements): 38431.98 requests per second
 LRANGE_500 (first 450 elements): 26983.27 requests per second
 LRANGE_600 (first 600 elements): 20721.09 requests per second
 MSET (10 keys): 210970.47 requests per second

使用 pipelining

默认情况下,每个客户端都是在一个请求完成之后才发送下一个请求 (benchmark 会模拟 50 个客户端除非使用 -c 指定特别的数量), 这意味着服务器几乎是按顺序读取每个客户端的命令。Also RTT is payed as well.

真实世界会更复杂,Redis 支持 /topics/pipelining,使得可以一次性执行多条命令成为可能。 Redis pipelining 可以提高服务器的 TPS。

示例3:

redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 50 -t set,get -P 16 -q

 SET: 625400.00 requests per second
 GET: 1318315.88 requests per second
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值