Du skal tænke lidt mere over, hvad du egentlig benchmarker ved at bruge dette program. Jeg kan fortælle dig, at det ikke er Redis, men snarere dit systems evne til at køre et ping pong-spil mellem to processer (fordi alle dine hsetnx-kald er synkrone).
Læs venligst denne side, før du prøver at benchmarke Redis, det vil helt sikkert hjælpe dig.
Din antagelse om, at hastigheden på Redis skulle nærme sig skrivehastigheden for RAM, er noget naiv. Redis er en fjernbetjening butik, og for O(1) operationer skyldes det meste af overhead kommunikationsomkostningerne. For synkron trafik (som dit eksempel) skyldes det også omkostningerne ved OS-planlæggeren.
Hvis du vil anvende mange kommandoer i rækkefølge, skal du bruge pipelining. Eller hvis du er ligeglad med rækkefølgen, kan du arbejde samtidig med flere forbindelser (dette er standardtilstanden for redis-benchmark). Eller du kan prøve at sende asynkrone kommandoer i stedet for. I alle tilfælde er tanken at amortisere omkostningerne ved rundrejserne til Redis-serveren
Med pipelining på flere forbindelser med asynkron trafik vil du få den maksimale gennemstrømning Redis kan opnå på denne maskine.