sql >> Database >  >> NoSQL >> Redis

Waarom zijn de prestaties van Redis SET beter dan GET?

Eigenlijk is dit alleen een effect dat je standaard meer I/O meet dan de daadwerkelijke uitvoeringstijd van de opdracht. Als je pipelining in de benchmark begint in te schakelen, is het een beetje meer de maatstaf voor de daadwerkelijke opdrachtprestaties en zullen de cijfers veranderen:

$ 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

Nu is GET sneller :-)

We zouden pipelining moeten opnemen in onze benchmarkdocumentpagina.

BEWERKEN: Dit is hier nog duidelijker:

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

Deze opdracht biedt CPU-tijd om het verzoek intern te verwerken, zonder rekening te houden met I/O. SET is drie keer langzamer om te verwerken.




  1. Redis:Hoe stel je een sleutel gelijk aan de waarde van een andere sleutel?

  2. WiredTiger en interne updates

  3. Alles in een MongoDB-database verwijderen

  4. hoe de caching vrij te geven die wordt gebruikt door Mongodb?