Redis自带redis-benchmark测试工具用来测试Redis的性能,redis-benchmark可以模拟多个客户端同时发送多个请求。
Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
-q 静默模式,只显示requests per second的值
-n 总共发起的请求数量
1.向6379这个redis实例发送500000个请求数
redis-benchmark -p 6379 -q -n 500000
PING_INLINE: 66365.81 requests per second PING_BULK: 61440.16 requests per second SET: 55401.66 requests per second GET: 66693.34 requests per second INCR: 62790.41 requests per second LPUSH: 57836.90 requests per second LPOP: 68587.11 requests per second SADD: 69280.87 requests per second SPOP: 69803.16 requests per second LPUSH (needed to benchmark LRANGE): 69473.39 requests per second LRANGE_100 (first 100 elements): 35216.23 requests per second LRANGE_300 (first 300 elements): 15170.36 requests per second LRANGE_500 (first 450 elements): 10984.18 requests per second LRANGE_600 (first 600 elements): 8499.21 requests per second MSET (10 keys): 44980.21 requests per second
2.只测试几个命令
redis-benchmark -p 26379 -q -n 500000 -t set,get,mset
3.选择key space的大小
默认benchmark runs against单个key。
可以使用-r 参数为SET/GET/INCR操作使用随机KEY.
redis-benchmark -t set -r 1000000 -n 1000000
4.使用pipeling
redis-benchmark默认模拟50个客户端,如果不指定-c参数。默认redis-benchmark在发送下一个命令之前需要接收到之前命令执行后的回复。
Redis支持PIPELING。一次可以发送多个命令。使用pipeling后明显测试的性能提高了
#redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q SET: 59400.06 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 10 SET: 276472.22 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 20 SET: 304414.00 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 30 SET: 320000.00 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 50 SET: 337495.78 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 100 SET: 359066.41 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 200 SET: 307787.00 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 300 SET: 293427.22 requests per second # redis-benchmark -p 6379 -t set -r 1000000 -n 1000000 -q -P 400 SET: 276931.59 requests per second
5.影响Redis性能的主要因素
a.网络带宽和延迟对Redis的性能有直接的影响。
b.CPU。Redis是单线程设计,所以更快的CPU可以增加Redis的吞吐量。
c.内存
d.Redis在虚拟化环境下会比在物理机器上慢很多。
e.当Redis服务端和客户端在同一台机器上时,TCP端口和UNIX Sockets都可以使用。但是使用UNIX Sockets可以比使用TCP端口增加50%的吞吐量。
f.使用Redis pipeline的时候UNIX Sockets比TCP端口的性能优势有减小的趋势。
g.通过网卡访问Redis时,使用pipeline的数据在网卡数据包大小(大约1500字节)之下效率会更高。
.
h.