Eigentlich ist dies nur ein Effekt, dass Sie standardmäßig mehr I/O messen als die tatsächliche Befehlsausführungszeit. Wenn Sie beginnen, das Pipelining im Benchmark zu aktivieren, ist es ein bisschen mehr das Maß für die tatsächliche Befehlsleistung, und die Zahlen ändern sich:
$ redis-benchmark -q -n 1000000 -P 32 set foo bar
set foo bar: 338964.03
$ redis-benchmark -q -n 1000000 -P 32 get foo
get foo: 432713.09 requests per second
Jetzt ist GET schneller :-)
Wir sollten Pipelining in unsere Benchmark-Dokumentationsseite aufnehmen.
BEARBEITEN: Dies wird hier noch deutlicher:
redis 127.0.0.1:6379> info commandstats
# Commandstats
cmdstat_get:calls=1001568,usec=221845,usec_per_call=0.22
cmdstat_set:calls=831104,usec=498235,usec_per_call=0.60
Dieser Befehl stellt CPU-Zeit bereit, um die Anforderung intern zu bedienen, ohne E/A zu berücksichtigen. SET ist dreimal langsamer zu verarbeiten.