En fait, ce n'est qu'un effet du fait que, par défaut, vous mesurez plus d'E/S que le temps d'exécution réel de la commande. Si vous commencez à activer le pipelining dans le benchmark, c'est un peu plus la mesure des performances réelles de la commande, et les chiffres changeront :
$ 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
Maintenant GET est plus rapide :-)
Nous devrions inclure le pipelining dans notre page de documentation de référence.
MODIF : C'est encore plus évident ici :
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
Cette commande fournit du temps CPU pour traiter la demande en interne, sans tenir compte des E/S. SET est trois fois plus lent à traiter.