redis压力测试工具redis-benchmark

因为在业务上线的时候需要对节点进行模拟并发的压力性能测试。
本文将使用redis自带的测试工具来对redis节点进行压力测试性能分析。

1.redis-benchmark压力测试工具:
redis-benchmark是官方自带的Redis性能测试工具,可以有效地测试Redis服务的性能。该工具的常用选项:

Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests>] [-k <boolean>]

 -h <hostname>      指定服务器IP地址或主机名 (default 127.0.0.1)
 -p <port>          指定服务器的端口(default 6379)
 -s <socket>        指定服务器的socket接口
 -a <password>      Redis server的密码
 -c <clients>       指定并发连接数 (default 50)
 -n <requests>      总的请求数 (default 100000)
 -d <size>          以字节(B)为单位指定SET / GET值的数据大小
 --dbnum <db>       选择redis数据库的编号默认为0 (default 0)
 -k <boolean>       1=keep alive 0=reconnect (default 1) 设置redis实例连接数
 -r <keyspacelen>   对SET / GET / INCR使用随机键,对SADD使用随机值使用此选项,基准测试将扩展字符串__rand_int__在具有指定范围内的12位数字的参数中从0到keyspacelen-1。 每次命令替换都会更改
被执行。 默认测试使用它来击中指定范围。
 -P <numreq>       通过管道传输<numreq>请求。
 -e                 如果服务器回复错误,会在标准输出上显示它们。
                     (每秒显示不超过1个错误)
 -q                 强制退出redis 仅显示 query/sec 值
 --csv              以CSV格式输出。
 -l                 生成循环,永久执行测试
 -t <tests>         仅运行以逗号分隔的测试列表。(set,lpush)
 -I                 Idle 模式. 仅打开N个idle连接并等待。

Examples:

 Run the benchmark with the default configuration against 127.0.0.1:6379:
   $ redis-benchmark

 Use 20 parallel clients, for a total of 100k requests, against 192.168.1.1:
   $ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20

 Fill 127.0.0.1:6379 with about 1 million keys only using the SET test:
   $ redis-benchmark -t set -n 1000000 -r 100000000

 Benchmark 127.0.0.1:6379 for a few commands producing CSV output:
   $ redis-benchmark -t ping,set,get -n 100000 --csv

 Benchmark a specific command line:
   $ redis-benchmark -r 10000 -n 10000 eval 'return redis.call("ping")' 0

 Fill a list with 10000 random elements:
   $ redis-benchmark -r 10000 -n 10000 lpush mylist __rand_int__

 On user specified command lines __rand_int__ is replaced with a random integer
 	with a range of values selected by the -r option.

2.redis压力测试性能分析

#向指定IP地址及端口的Redis服务器发送100个并发连接和10000请求测试性能
root@ubuntu:~# redis-benchmark -a 123456 -p 6379 -c 100 -n 10000
#redis-benchmark会模拟并发redis的基本指令来测试服务的性能.
====== PING_INLINE ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

93.10% <= 1 milliseconds
99.99% <= 2 milliseconds
100.00% <= 2 milliseconds
63291.14 requests per second

====== PING_BULK ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

93.43% <= 1 milliseconds
99.75% <= 2 milliseconds
100.00% <= 2 milliseconds
62500.00 requests per second

====== SET ======
  10000 requests completed in 0.16 seconds	#10000个请求用时0.16秒
  100 parallel clients						#每次请求有100个并行的客户端
  3 bytes payload							#每次只写入三个字符串
  keep alive: 1								#保持连接的实例

93.53% <= 1 milliseconds					#1毫秒处理93.53%的请求
99.97% <= 2 milliseconds					#2毫秒处理99.97%的请求
100.00% <= 2 milliseconds					#2毫秒不到3毫秒处理完成所有请求
64102.56 requests per second				#每秒处理64102.56请求

====== GET ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

94.98% <= 1 milliseconds
100.00% <= 1 milliseconds
63291.14 requests per second

====== INCR ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

95.51% <= 1 milliseconds
100.00% <= 2 milliseconds
63291.14 requests per second

====== LPUSH ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

95.31% <= 1 milliseconds
100.00% <= 1 milliseconds
64102.56 requests per second

====== RPUSH ======
  10000 requests completed in 0.15 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

94.73% <= 1 milliseconds
99.97% <= 2 milliseconds
100.00% <= 2 milliseconds
64935.07 requests per second

====== LPOP ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

92.86% <= 1 milliseconds
99.98% <= 2 milliseconds
100.00% <= 2 milliseconds
62500.00 requests per second

====== RPOP ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

94.60% <= 1 milliseconds
99.99% <= 2 milliseconds
100.00% <= 2 milliseconds
63291.14 requests per second

====== SADD ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

95.09% <= 1 milliseconds
99.99% <= 2 milliseconds
100.00% <= 2 milliseconds
62111.80 requests per second

====== HSET ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

95.34% <= 1 milliseconds
100.00% <= 1 milliseconds
63694.27 requests per second

====== SPOP ======
  10000 requests completed in 0.15 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

98.91% <= 1 milliseconds
100.00% <= 1 milliseconds
68493.15 requests per second

====== LPUSH (needed to benchmark LRANGE) ======
  10000 requests completed in 0.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

94.83% <= 1 milliseconds
100.00% <= 1 milliseconds
64102.56 requests per second

====== LRANGE_100 (first 100 elements) ======
  10000 requests completed in 0.28 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

0.01% <= 1 milliseconds
98.43% <= 2 milliseconds
99.66% <= 3 milliseconds
99.88% <= 4 milliseconds
100.00% <= 4 milliseconds
35587.19 requests per second

====== LRANGE_300 (first 300 elements) ======
  10000 requests completed in 0.68 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

0.01% <= 1 milliseconds
0.10% <= 2 milliseconds
1.11% <= 3 milliseconds
96.20% <= 4 milliseconds
98.86% <= 5 milliseconds
99.21% <= 6 milliseconds
99.41% <= 7 milliseconds
99.63% <= 8 milliseconds
99.83% <= 9 milliseconds
99.94% <= 10 milliseconds
99.99% <= 11 milliseconds
100.00% <= 11 milliseconds
14749.26 requests per second

====== LRANGE_500 (first 450 elements) ======
  10000 requests completed in 0.94 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

0.01% <= 1 milliseconds
0.07% <= 2 milliseconds
0.14% <= 3 milliseconds
1.12% <= 4 milliseconds
94.22% <= 5 milliseconds
98.56% <= 6 milliseconds
99.05% <= 7 milliseconds
99.14% <= 8 milliseconds
99.35% <= 9 milliseconds
99.53% <= 10 milliseconds
99.72% <= 11 milliseconds
99.81% <= 12 milliseconds
99.90% <= 13 milliseconds
100.00% <= 14 milliseconds
10660.98 requests per second

====== LRANGE_600 (first 600 elements) ======
  10000 requests completed in 1.16 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

0.01% <= 1 milliseconds
0.06% <= 2 milliseconds
0.12% <= 3 milliseconds
0.31% <= 4 milliseconds
3.61% <= 5 milliseconds
77.21% <= 6 milliseconds
97.49% <= 7 milliseconds
98.27% <= 8 milliseconds
98.66% <= 9 milliseconds
98.94% <= 10 milliseconds
99.14% <= 11 milliseconds
99.28% <= 12 milliseconds
99.38% <= 13 milliseconds
99.44% <= 14 milliseconds
99.50% <= 15 milliseconds
99.56% <= 16 milliseconds
99.65% <= 17 milliseconds
99.78% <= 18 milliseconds
99.90% <= 19 milliseconds
99.96% <= 20 milliseconds
99.99% <= 21 milliseconds
100.00% <= 21 milliseconds
8605.85 requests per second

====== MSET (10 keys) ======
  10000 requests completed in 0.15 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

41.62% <= 1 milliseconds
97.50% <= 2 milliseconds
100.00% <= 2 milliseconds
64935.07 requests per second
# milliseconds为毫秒,时间越短,性能越好。

在压测结束后redis-benchmark会往我们redis默认0号库里面存一些值:

127.0.0.1:6379> KEYS *
1) "myset:__rand_int__"
2) "mylist"
3) "counter:__rand_int__"
4) "key:__rand_int__"
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值