redis-benchmark -q -r 100000 -n 100000 -c 50
比如:開100條線程(默認(rèn)50),SET 1千萬次(key在0-1千萬間隨機(jī)),key長21字節(jié),value長256字節(jié)的數(shù)據(jù)。-r指的是使用隨機(jī)key的范圍。
redis-benchmark -t SET -c 100 -n 10000000 -r 10000000 -d 256
也可以直接執(zhí)行l(wèi)ua腳本模擬客戶端
redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"
注意:Redis-Benchmark的測試結(jié)果提供了一個保證你的 Redis-Server 不會運(yùn)行在非正常狀態(tài)下的基準(zhǔn)點(diǎn),但是你永遠(yuǎn)不要把它作為一個真實(shí)的“壓力測試”。壓力測試需要反應(yīng)出應(yīng)用的運(yùn)行方式,并且需要一個盡可能的和生產(chǎn)相似的環(huán)境。
Redis-benchmark還有一個作用就是灌數(shù)據(jù),例如下列測試場景,我們對某個系統(tǒng)常用redis API進(jìn)行測試,下列是一個測試hget、hset的過程,我們首先利用__rand_int__進(jìn)行隨機(jī)整數(shù)獲取,對myhash這個key進(jìn)行測試數(shù)據(jù)灌入(這也就測試了hset性能),然后再對其進(jìn)行hget:
MSMSAPP1:/tmp # ./redis-benchmark -a pass -h 40.XXX.XXX.141 -p 16XXXX -r 500000 -n 500000 hset myhash __rand_int__ __rand_int__
====== hset myhash __rand_int__ __rand_int__ ======
500000 requests completed in 18.74 seconds
50 parallel clients
3 bytes payload
keep alive: 1
23.53% <= 1 milliseconds
95.84% <= 2 milliseconds
97.62% <= 3 milliseconds
97.71% <= 4 milliseconds
97.80% <= 5 milliseconds
97.84% <= 6 milliseconds
97.84% <= 8 milliseconds
97.85% <= 9 milliseconds
97.85% <= 10 milliseconds
97.85% <= 11 milliseconds
97.86% <= 12 milliseconds
97.88% <= 13 milliseconds
97.90% <= 14 milliseconds
97.92% <= 15 milliseconds
97.94% <= 16 milliseconds
97.94% <= 20 milliseconds
97.95% <= 21 milliseconds
97.95% <= 22 milliseconds
97.99% <= 23 milliseconds
98.01% <= 24 milliseconds
98.11% <= 25 milliseconds
98.43% <= 26 milliseconds
98.85% <= 27 milliseconds
99.17% <= 28 milliseconds
99.43% <= 29 milliseconds
99.54% <= 30 milliseconds
99.68% <= 31 milliseconds
99.77% <= 32 milliseconds
99.81% <= 33 milliseconds
99.85% <= 34 milliseconds
99.85% <= 35 milliseconds
99.87% <= 36 milliseconds
99.88% <= 37 milliseconds
99.89% <= 38 milliseconds
99.90% <= 39 milliseconds
99.90% <= 40 milliseconds
99.91% <= 44 milliseconds
99.91% <= 45 milliseconds
99.91% <= 46 milliseconds
99.92% <= 47 milliseconds
99.92% <= 48 milliseconds
99.93% <= 49 milliseconds
99.93% <= 50 milliseconds
99.95% <= 51 milliseconds
99.96% <= 52 milliseconds
99.96% <= 53 milliseconds
99.97% <= 54 milliseconds
99.98% <= 55 milliseconds
100.00% <= 55 milliseconds
26679.47 requests per second
MSMSAPP1:/tmp # ./redis-benchmark -a pass 40.XXX.XXX.141 -p 16XXXX -r 500000 -n 500000 hget myhash __rand_int__ __rand_int__
====== hget myhash __rand_int__ __rand_int__ ======
500000 requests completed in 13.83 seconds
50 parallel clients
3 bytes payload
keep alive: 1
74.29% <= 1 milliseconds
98.29% <= 2 milliseconds
98.45% <= 3 milliseconds
98.45% <= 4 milliseconds
98.45% <= 5 milliseconds
98.46% <= 11 milliseconds
98.46% <= 12 milliseconds
98.48% <= 15 milliseconds
98.49% <= 16 milliseconds
98.50% <= 22 milliseconds
98.50% <= 23 milliseconds
98.57% <= 24 milliseconds
98.81% <= 25 milliseconds
99.16% <= 26 milliseconds
99.45% <= 27 milliseconds
99.71% <= 28 milliseconds
99.84% <= 29 milliseconds
99.91% <= 30 milliseconds
99.94% <= 31 milliseconds
99.94% <= 32 milliseconds
99.95% <= 33 milliseconds
99.96% <= 34 milliseconds
99.96% <= 44 milliseconds
99.96% <= 45 milliseconds
99.97% <= 49 milliseconds
99.97% <= 50 milliseconds
99.99% <= 55 milliseconds
100.00% <= 56 milliseconds
100.00% <= 56 milliseconds
36145.45 requests per second
注意:上述測試由于是取的隨機(jī)值,因此hget可能沒有命中,同時payload比較小,所以這是個極限性能。
另外,還有一個工具是RedisLab放出來的,我并沒有進(jìn)行測試 參見:https://github.com/RedisLabs/memtier_benchmark