Redis
 sql >> Database >  >> NoSQL >> Redis

Perché le prestazioni di Redis SET sono migliori di GET?

In realtà questo è solo un effetto che per impostazione predefinita si misura più I/O rispetto al tempo effettivo di esecuzione del comando. Se inizi ad abilitare il pipelining nel benchmark, è un po' più la misura delle effettive prestazioni del comando e i numeri cambieranno:

$ 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

Ora GET è più veloce :-)

Dovremmo includere la pipeline nella nostra pagina del documento di benchmark.

MODIFICA: Questo è ancora più evidente qui:

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

Questo comando fornisce il tempo della CPU per soddisfare la richiesta internamente, senza tenere conto dell'I/O. L'elaborazione di SET è tre volte più lenta.