Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序)。你可以使用 redis-benchmark -h 来查看基准参数。
程序位置
redis-benchmark在redis安装路径的bin目录下
[root@hadoop-master bin]# cd /usr/local/redis/bin/
[root@hadoop-master bin]# ls
mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
参数说明
Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
-h <hostname> Server hostname (default 127.0.0.1)
-p <port> Server port (default 6379)
-s <socket> Server socket (overrides host and port)
-a <password> Password for Redis Auth
-c <clients> Number of parallel connections (default 50)[并行连接的数量默认是50个]
-n <requests> Total number of requests (default 100000)[请求个数]
-d <size> Data size of SET/GET value in bytes (default 2)
-dbnum <db> SELECT the specified db number (default 0)
-k <boolean> 1=keep alive 0=reconnect (default 1)
-r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD[使用随机键设置/获取/增加]
Using this option the benchmark will expand the string __rand_int__
inside an argument with a 12 digits number in the specified range
from 0 to keyspacelen-1. The substitution changes every time a command
is executed. Default tests use this to hit random keys in the
specified range.
-P <numreq> Pipeline <numreq> requests. Default 1 (no pipeline).
-q Quiet. Just show query/sec values[只显示查询/秒值]
--csv Output in CSV format
-l Loop. Run the tests forever
-t <tests> Only run the comma separated list of tests. The test
names are the same as the ones produced as output.
-I Idle mode. Just open N idle connections and wait.
(1) PING_INLINE
(2) PING_BULK
(3) SET:将字符串值value关联到key;
(4) GET:返回key所关联的字符串值,如果key存储的值不是字符串类型,返回一个错误;
(5) INCR:将key中存储的数字值增一。不能转换为数字则报错;
(6) LPUSH:将一个或多个值value插入到列表key的表头;
(7) RPUSH:将一个或多个值value插入到列表key的表尾;
(8) LPOP:移除并返回列表key的头元素;
(9) RPOP:移除并返回列表key的尾元素;
(10) SADD:将一个或多个member元素加入到集合set当中,已经存在于集合的member元素将被忽略;
(11) SPOP:移除并返回集合中的一个随机元素;
(12) LPUSH:将一个或多个value插入到列表key的表头;
(13) LRANGE_100:返回列表key中指定区间内的元素,前100条元素;
(14) LRANGE_300:返回列表key中指定区间内的元素,前300条元素;
(15) LRANGE_500:返回列表key中指定区间内的元素,前500条元素;
(16) LRANGE_600:返回列表key中指定区间内的元素,前600条元素;
(17) MSET:同时设置一个或多个key-value对,value为字符串。
例子1
随机生成100000个随机key,用-r执行
./redis-benchmark -r 100000 -n 100000 -q
例子2
100个并发连接,100000个请求,检测redis性能
./redis-benchmark -c 100 -n 100000
结果展示
#展示set命令的性能
====== SET ======
100000 requests completed in 2.78 seconds[10000个请求在2.78内完成]
100 parallel clients
3 bytes payload
keep alive: 1
#下面是完成的频率,百分之19.38在小于1毫秒之内完成
19.38% <= 1 milliseconds
73.54% <= 2 milliseconds
86.18% <= 3 milliseconds
90.08% <= 4 milliseconds
94.31% <= 5 milliseconds
96.96% <= 6 milliseconds
98.14% <= 7 milliseconds
98.60% <= 8 milliseconds
99.10% <= 9 milliseconds
99.39% <= 10 milliseconds
99.67% <= 11 milliseconds
99.72% <= 12 milliseconds
99.78% <= 13 milliseconds
99.79% <= 14 milliseconds
99.81% <= 15 milliseconds
99.87% <= 16 milliseconds
99.88% <= 17 milliseconds
99.90% <= 18 milliseconds
99.90% <= 19 milliseconds
99.90% <= 21 milliseconds
99.91% <= 22 milliseconds
99.94% <= 23 milliseconds
99.97% <= 24 milliseconds
100.00% <= 25 milliseconds
100.00% <= 25 milliseconds
35984.17 requests per second [每秒一共处理35984.17 个请求]
====== GET ======
100000 requests completed in 2.57 seconds
100 parallel clients
3 bytes payload
keep alive: 1
21.78% <= 1 milliseconds
74.44% <= 2 milliseconds
89.89% <= 3 milliseconds
95.74% <= 4 milliseconds
98.17% <= 5 milliseconds
99.00% <= 6 milliseconds
99.42% <= 7 milliseconds
99.64% <= 8 milliseconds
99.88% <= 9 milliseconds
99.96% <= 10 milliseconds
100.00% <= 11 milliseconds
38955.98 requests per second
例子3
测试某一些命令的性能,用-t指定要测试的命令
./redis-benchmark -t set,lpush -n 100000 -c 100
网友评论