Skip to content

Instantly share code, notes, and snippets.

@snowmerak
Created June 2, 2024 10:22
Show Gist options
  • Save snowmerak/a86fc2248a142673b44331a6a371bc6e to your computer and use it in GitHub Desktop.
Save snowmerak/a86fc2248a142673b44331a6a371bc6e to your computer and use it in GitHub Desktop.
#!/bin/bash
FORMAT="${1:-easy}"
MODE="${2:-single}"
HOST="${3:-127.0.0.1}"
PORT="${4:-6379}"
CLIENTS="${5:-6}"
BODY_SIZE="${6:-512}"
KEY_COUNT="${7:-5000}"
USAGE_HELP="usage: benchmark.sh [easy|csv] [single|cluster] host(default 127.0.0.1) port(default 6379) clients(number:default 6) body_size(byte:default 512) key_count(number:default 5000)"
if [ "$FORMAT" != "easy" ] && [ "$FORMAT" != "csv" ]; then
echo "help: format must be easy or csv"
echo $USAGE_HELP
exit 1
fi
if [ "$MODE" != "single" ] && [ "$MODE" != "cluster" ]; then
echo "help: mode must be single or cluster"
echo $USAGE_HELP
exit 1
fi
CMD="redis-benchmark -h $HOST -p $PORT -d $BODY_SIZE -c $CLIENTS -r $KEY_COUNT"
if [ "$MODE" == "cluster" ]; then
CMD="$CMD --cluster"
fi
if [ "$FORMAT" == "easy" ]; then
CMD="$CMD -q"
fi
if [ "$FORMAT" == "csv" ]; then
CMD="$CMD --csv"
fi
CMD="$CMD -t set,get,lpush,rpop,llen,lrange,sadd,incr"
$CMD
@snowmerak
Copy link
Author

snowmerak commented Jun 2, 2024

in my mac

➜ ./benchmark.sh csv single 127.0.0.1 6379 500 128
"test","rps","avg_latency_ms","min_latency_ms","p50_latency_ms","p95_latency_ms","p99_latency_ms","max_latency_ms"
"SET","80450.52","6.048","0.432","5.775","9.119","12.359","26.911"
"GET","69637.88","7.036","1.144","6.679","10.887","14.255","27.087"
"INCR","86880.97","5.625","0.592","5.423","8.983","11.383","32.431"
"LPUSH","74128.98","6.619","0.696","6.815","10.303","14.383","25.839"
"RPOP","78988.94","6.208","0.656","5.847","10.695","14.423","40.831"
"SADD","91157.70","5.363","0.464","5.007","8.575","12.231","31.487"
"LPUSH (needed to benchmark LRANGE)","93896.71","5.198","0.336","4.799","8.079","11.263","18.623"
"LRANGE_100 (first 100 elements)","31715.82","14.334","3.512","17.599","19.023","20.687","42.015"
"LRANGE_300 (first 300 elements)","15320.97","11.632","3.592","11.343","16.975","20.639","48.575"
"LRANGE_500 (first 500 elements)","8332.64","14.304","3.240","14.079","21.807","30.383","47.551"
"LRANGE_600 (first 600 elements)","7781.50","17.730","5.080","16.575","28.287","67.135","152.063"
➜ ./benchmark.sh easy single 127.0.0.1 6379 500 128
SET: 73099.41 requests per second, p50=6.615 msec                   
GET: 83472.46 requests per second, p50=5.271 msec                    
INCR: 78431.38 requests per second, p50=6.519 msec                    
LPUSH: 93370.68 requests per second, p50=4.783 msec                    
RPOP: 85034.02 requests per second, p50=5.951 msec                   
SADD: 77101.00 requests per second, p50=5.687 msec                    
LPUSH (needed to benchmark LRANGE): 82712.98 requests per second, p50=6.103 msec                   
LRANGE_100 (first 100 elements): 32154.34 requests per second, p50=17.375 msec                    
LRANGE_300 (first 300 elements): 15835.31 requests per second, p50=11.407 msec                    
LRANGE_500 (first 500 elements): 8083.42 requests per second, p50=14.631 msec                   
LRANGE_600 (first 600 elements): 7499.62 requests per second, p50=16.127 msec      

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment