redis并发测试工具使用

简单测试

redis自带了并发测试工具 redis-benchmark, 只需要携带几个简单的参数就可以完成redis的压力测试.

并发测试

redis-benchmark.exe -h 127.0.0.1 -p 6379 -c 100 -n 100000

上面的命令意思是使用 100 的并发,发起 10w 次请求

结果分析

====== GET ======                           
  100000 requests completed in 0.98 seconds 
  100 parallel clients                      
  3 bytes payload                           
  keep alive: 1                             
                                            
60.40% <= 1 milliseconds                    
99.66% <= 2 milliseconds                    
99.88% <= 3 milliseconds                    
99.99% <= 4 milliseconds                    
100.00% <= 4 milliseconds                   
102249.49 requests per second               

比如上面的就是执行了 get 命令, 10w次请求在0.98s 执行完毕. 使用了100个客户端, 每次使用了 3个字节负载
其中 60.40% 在1ms 执行完毕.....

大数据测试

redis-benchmark.exe -h 127.0.0.1 -p 6379 -q -d 200

上面命令的意思是 一次数据包200字节, 结果做简单输出

结果分析

PING_INLINE: 104821.80 requests per second
PING_BULK: 113895.21 requests per second
SET: 102459.02 requests per second
GET: 110253.59 requests per second
INCR: 110011.00 requests per second
LPUSH: 91996.32 requests per second
RPUSH: 94786.73 requests per second
LPOP: 94428.70 requests per second
RPOP: 93984.96 requests per second

其中 SET: 102459.02 requests per second 表示每秒执行了10w+次请求

部分命令测试

redis-benchmark.exe -h 127.0.0.1 -p 6379 -t set,get -q -n 100000

上面命令的意思是对 set,get 两个命令做 10w 次请求测试, 结果做简单输出

结果分析

SET: 97656.24 requests per second
GET: 108813.92 requests per second

其中 GET: 108813.92 requests per second 表示每秒执行了10w+次 get 操作

只测试某种命令

redis-benchmark.exe -h 127.0.0.1 -p 6379 -n 100000 -q script load "redis.call('set','name','yzt')"

上面命令的意思是只测试 set name yzt 这一个命令的速度

结果分析

script load redis.call('set','name','yzt'): 82644.63 requests per second

结果表示当前命令一秒钟可以完成 8w+ 次操作

参数详解

  • -h, -p: 不解释
  • -c: 并发数
  • -n: 请求数
  • -q: 简单结果输出
  • -d 100: 100字节的负载
  • -t set:只测试set
  • script load:只测试某个脚本