redis-benchmark 可以为Redis做基准性能测试, 它提供了很多选项帮助开发和运维人员测试Redis的相关性能, 下面分别介绍这些选项。
-c(clients) 选项代表客户端的并发数量(默认是50) 。
-n(num) 选项代表客户端请求总量(默认是100000) 。 例如 redis-benchmark -c100 -n20000 代表100各个客户端同时请求Redis, 一共执行20000次。 redis-benchmark 会对各类数据结构的命令进行测试, 并给出性能指标:
- 20000 requests completed in 0.27 seconds
- 100 parallel clients
- 3 bytes payload
- keep alive: 1
- 99.11% <= 1 milliseconds
- 100.00% <= 1 milliseconds
- 73529.41 requests per second
例如上面一共执行了20000次get操作, 在0.27秒完成, 每个请求数据量是3个字节, 99.11%的命令执行时间小于1毫秒, Redis每秒可以处理73529.41次get请求。
-q 选项仅仅显示 redis-benchmar k的 requests per second 信息, 例如:
- $redis-benchmark -c 100 -n 20000 -q
- PING_INLINE: 74349.45 requests per second
- PING_BULK: 68728.52 requests per second
- SET: 71174.38 requests per second…
- LRANGE_500 (first 450 elements): 11299.44 requests per second
- LRANGE_600 (first 600 elements): 9319.67 requests per second
- MSET (10 keys): 70671.38 requests per second
在一个空的Redis上执行了redis-benchmark会发现只有3个键:
- 127.0.0.1:6379> dbsize
- (integer) 3
- 127.0.0.1:6379> keys *
- 1) "counter:__rand_int__"
- 2) "mylist"
- 3) "key:__rand_int__"
如果想向Redis插入更多的键, 可以执行使用-r(random) 选项, 可以向Redis插入更多随机的键。
$redis-benchmark -c 100 -n 20000 -r 10000
-r 选项会在key、 counter键上加一个12位的后缀, -r10000代表只对后四位做随机处理(-r不是随机数的个数) 。 例如上面操作后, key的数量和结 果结构如下:
- 127.0.0.1:6379> dbsize
- (integer) 18641
- 127.0.0.1:6379> scan 0
- 1) "14336"
- 2) 1) "key:000000004580"
- 2) "key:000000004519"
- …
- 10) "key:000000002113"
-P选项代表每个请求pipeline的数据量(默认为1) 。
-k选项代表客户端是否使用 keepalive, 1为使用, 0为不使用, 默认值为1。
-t选项可以对指定命令进行基准测试。
- redis-benchmark -t get,set -q
- SET: 98619.32 requests per second
- GET: 97560.98 requests per second
--csv选项会将结果按照csv格式输出, 便于后续处理, 如导出到Excel等。
- redis-benchmark -t get,set --csv
- "SET","81300.81"
- "GET","79051.38"
参考资料:《Redis 开发与运维》