运行测试
编译安装Redis后,请先启动Redis服务器,并采用Redis自带的redis-benchmark基准测试工具进行性能测试。
本文了提供Redis-benchmark常用命令的命令格式、命令选项及其说明,以及Redis-benchmark命令的使用示例。
命令格式
redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests>] [-k <boolean>]
命令选项及其说明
命令选项 |
命令选项说明 |
---|---|
-h <hostname> |
指定Redis服务器主机名或IP地址。默认为127.0.0.1。 |
-p <port> |
指定Redis服务器端口号。默认为6379。 |
-s <socket> |
指定使用socket方式连接。使用该选项时hostname和port无效。 |
-a <password> |
指定Redis服务器密码。 |
-user <username> |
指定连接Redis服务器时使用的用户名。 |
-c <clients> |
指定并发连接数。默认为50。 |
-n <requests> |
指定发送请求数。默认为100000。 |
-d <size> |
配置SET/GET操作的数据大小,单位为bytes。默认为3。 |
-dbnum <db> |
指定db序列号。默认为0。 |
-threads <num> |
开启客户端多线程模式并指定线程数。 |
-cluster |
开启集群测试模式。 |
-trac |
在测试启动前发送客户端跟踪。 |
-k <boolean> |
测试过程是否断开连接,即长连接或短连接。1表示长连接,0表示短连接。默认为1。 |
-r <keyspacelen> |
配置指定数据的key,对SET/GET/INCR使用随机key,对SADD使用随机value,对ZADD使用随机成员和分数。 |
-P <numreq> |
开启管道并配置每个请求的数据量。默认为1。 |
-q |
不输出过程数据。 |
-csv |
使用CSV格式输出测试结果。 |
-l |
循环模式,循环执行测试。 |
-t <tests> |
指定测试的命令类型,如PING、SET、GET等,以“,”分隔。 |
-I |
空闲模式,只打开空连接并等待。 |
使用示例
- 启动Redis服务器。
redis-server
- 开启10个redis-benchmark线程,创建1000个连接并随机发送10000000个set、get请求。
redis-benchmark -h 127.0.0.1 -c 1000 -n 10000000 -r 10000000 -t set,get --threads 10
测试string类型时,如果Redis服务端没有使用SET指令提前插入数据,测试GET模型时Redis服务端将返回空数据,此时的数据包大小对比先SET后GET的数据包会偏小。测试其他数据类型时(如list、zset等),原理一样。
测试结果主要包含三部分:主要参数配置、时延详细分布情况和每秒处理请求数以及时延汇总数据。
图1 主要参数配置示例图2 时延详细分布情况示例图3 每秒处理请求数以及时延汇总数据示例