Devi pensare un po' di più a ciò che realmente esegui il benchmark utilizzando questo programma. Posso dirti che non è Redis, ma piuttosto la capacità del tuo sistema di eseguire un gioco di ping pong tra due processi (perché tutte le tue chiamate hsetnx sono sincrone).
Si prega di leggere questa pagina prima di provare a confrontare Redis, ti sarà sicuramente di aiuto.
La tua ipotesi che la velocità di Redis dovrebbe avvicinarsi alla velocità di scrittura della RAM è alquanto ingenua. Redis è un telecomando negozio e per le operazioni O(1), la maggior parte delle spese generali è dovuta ai costi di comunicazione. Per il traffico sincrono (come il tuo esempio), è anche dovuto al costo dello scheduler del sistema operativo.
Se vuoi applicare molti comandi in sequenza, devi usare il pipelining. Oppure, se non ti interessa la sequenza, puoi lavorare contemporaneamente con più connessioni (questa è la modalità predefinita per redis-benchmark). Oppure puoi provare a inviare comandi asincroni invece. In ogni caso, l'idea è quella di ammortizzare il costo dei viaggi di andata e ritorno al server Redis
Con la pipeline su più connessioni con traffico asincrono, otterrai il massimo throughput che Redis può raggiungere su questa macchina.