Je moet wat meer nadenken over wat je echt benchmarkt met dit programma. Ik kan je vertellen dat het niet Redis is, maar eerder de mogelijkheid van je systeem om een pingpongspel tussen twee processen uit te voeren (omdat al je hsetnx-aanroepen synchroon zijn).
Lees deze pagina voordat u Redis probeert te benchmarken, het zal u zeker helpen.
Uw veronderstelling dat de snelheid van Redis de schrijfsnelheid van RAM zou moeten benaderen, is enigszins naïef. Redis is een afstandsbediening winkel, en voor O(1)-operaties is het grootste deel van de overhead te wijten aan de communicatiekosten. Voor synchroon verkeer (zoals uw voorbeeld) is dit ook te wijten aan de kosten van de OS-planner.
Als u veel opdrachten achter elkaar wilt toepassen, moet u pipelining gebruiken. Of als u niet om de volgorde geeft, kunt u gelijktijdig met meerdere verbindingen werken (dit is de standaardmodus voor redis-benchmark). Of u kunt in plaats daarvan proberen asynchrone opdrachten te verzenden. In alle gevallen is het de bedoeling om de kosten van de retourvluchten naar de Redis-server af te schrijven
Met pipelining op verschillende verbindingen met asynchroon verkeer, krijgt u de maximale doorvoer die Redis op deze machine kan bereiken.