Du måste tänka lite mer på vad du verkligen riktmärker med detta program. Jag kan säga att det inte är Redis, utan snarare förmågan hos ditt system att köra ett pingisspel mellan två processer (eftersom alla dina hsetnx-anrop är synkrona).
Läs den här sidan innan du försöker benchmarka Redis, det kommer definitivt att hjälpa dig.
Ditt antagande att hastigheten på Redis bör närma sig skrivhastigheten för RAM är något naivt. Redis är en fjärrkontroll butik, och för O(1)-operationer beror det mesta av omkostnaderna på kommunikationskostnaderna. För synkron trafik (som ditt exempel) beror det också på kostnaden för OS-schemaläggaren.
Om du vill använda många kommandon i sekvens måste du använda pipelining. Eller om du inte bryr dig om sekvensen kan du arbeta samtidigt med flera anslutningar (detta är standardläget för redis-benchmark). Eller så kan du försöka skicka asynkrona kommandon istället. I alla fall är tanken att amortera kostnaden för tur och retur till Redis-servern
Med pipelining på flera anslutningar med asynkron trafik får du den maximala genomströmningen Redis kan uppnå på den här maskinen.