Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Warum ist die Leistung von Redis SET besser als die von GET?

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.