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

Hvorfor er Redis SET ydeevne bedre end GET?

Faktisk er dette kun en effekt af, at du som standard måler mere I/O end den faktiske kommandoudførelsestid. Hvis du begynder at aktivere pipelining i benchmark, er det lidt mere målet for den faktiske kommandoydelse, og tallene vil ændre sig:

$ 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 er GET hurtigere :-)

Vi bør inkludere pipelining på vores benchmark-dokumentside.

EDIT: Dette er endnu mere tydeligt her:

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

Denne kommando giver CPU-tid til at betjene anmodningen internt uden at tage højde for I/O. SET er tre gange langsommere at behandle.




  1. mongodb:indsæt hvis ikke eksisterer

  2. actionkabel abonnerer lokalt, men ikke på heroku

  3. Hvordan kender jeg datatypen for værdien af ​​en given nøgle?

  4. Go JSON-afkodning er meget langsom. Hvad ville være en bedre måde at gøre det på?