2 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN">
5 <link type=
"text/css" rel=
"stylesheet" href=
"style.css" />
12 <img style=
"border:none" alt=
"Redis Documentation" src=
"redis.png">
16 <div id=
"pagecontent">
18 <!-- This is a (PRE) block. Make sure it's left aligned or your toc title will be off. -->
19 <b>Benchmarks: Contents
</b><br> <a href=
"#How Fast is Redis?">How Fast is Redis?
</a><br> <a href=
"#Latency percentiles">Latency percentiles
</a>
22 <h1 class=
"wikiname">Benchmarks
</h1>
29 <h1><a name=
"How Fast is Redis?">How Fast is Redis?
</a></h1>Redis includes the
<code name=
"code" class=
"python">redis-benchmark
</code> utility that simulates SETs/GETs done by N clients at the same time sending M total queries (it is similar to the Apache's
<code name=
"code" class=
"python">ab
</code> utility). Below you'll find the full output of the benchmark executed against a Linux box.
<br/><br/><ul><li> The test was done with
50 simultaneous clients performing
100000 requests.
</li><li> The value SET and GET is a
256 bytes string.
</li><li> The Linux box is running
<b>Linux
2.6</b>, it's
<b>Xeon X3320
2.5Ghz
</b>.
</li><li> Text executed using the loopback interface (
127.0.0.1).
</li></ul>
30 Results:
<b>about
110000 SETs per second, about
81000 GETs per second.
</b><h1><a name=
"Latency percentiles">Latency percentiles
</a></h1><pre class=
"codeblock python" name=
"code">
31 ./redis-benchmark -n
100000
34 100007 requests completed in
0.88 seconds
39 58.50%
<=
0 milliseconds
40 99.17%
<=
1 milliseconds
41 99.58%
<=
2 milliseconds
42 99.85%
<=
3 milliseconds
43 99.90%
<=
6 milliseconds
44 100.00%
<=
9 milliseconds
45 114293.71 requests per second
48 100000 requests completed in
1.23 seconds
53 43.12%
<=
0 milliseconds
54 96.82%
<=
1 milliseconds
55 98.62%
<=
2 milliseconds
56 100.00%
<=
3 milliseconds
57 81234.77 requests per second
60 100018 requests completed in
1.46 seconds
65 32.32%
<=
0 milliseconds
66 96.67%
<=
1 milliseconds
67 99.14%
<=
2 milliseconds
68 99.83%
<=
3 milliseconds
69 99.88%
<=
4 milliseconds
70 99.89%
<=
5 milliseconds
71 99.96%
<=
9 milliseconds
72 100.00%
<=
18 milliseconds
73 68458.59 requests per second
76 100004 requests completed in
1.14 seconds
81 62.27%
<=
0 milliseconds
82 99.74%
<=
1 milliseconds
83 99.85%
<=
2 milliseconds
84 99.86%
<=
3 milliseconds
85 99.89%
<=
5 milliseconds
86 99.93%
<=
7 milliseconds
87 99.96%
<=
9 milliseconds
88 100.00%
<=
22 milliseconds
89 100.00%
<=
208 milliseconds
90 88109.25 requests per second
93 100001 requests completed in
1.39 seconds
98 54.83%
<=
0 milliseconds
99 97.34%
<=
1 milliseconds
100 99.95%
<=
2 milliseconds
101 99.96%
<=
3 milliseconds
102 99.96%
<=
4 milliseconds
103 100.00%
<=
9 milliseconds
104 100.00%
<=
208 milliseconds
105 71994.96 requests per second
106 </pre>Notes: changing the payload from
256 to
1024 or
4096 bytes does not change the numbers significantly (but reply packets are glued together up to
1024 bytes so GETs may be slower with big payloads). The same for the number of clients, from
50 to
256 clients I got the same numbers. With only
10 clients it starts to get a bit slower.
<br/><br/>You can expect different results from different boxes. For example a low profile box like
<b>Intel core duo T5500 clocked at
1.66Ghz running Linux
2.6</b> will output the following:
107 <pre class=
"codeblock python python" name=
"code">
108 ./redis-benchmark -q -n
100000
109 SET:
53684.38 requests per second
110 GET:
45497.73 requests per second
111 INCR:
39370.47 requests per second
112 LPUSH:
34803.41 requests per second
113 LPOP:
37367.20 requests per second
114 </pre>Another one using a
64 bit box, a Xeon L5420 clocked at
2.5 Ghz:
<br/><br/><pre class=
"codeblock python python python" name=
"code">
115 ./redis-benchmark -q -n
100000
116 PING:
111731.84 requests per second
117 SET:
108114.59 requests per second
118 GET:
98717.67 requests per second
119 INCR:
95241.91 requests per second
120 LPUSH:
104712.05 requests per second
121 LPOP:
93722.59 requests per second