From: antirez Date: Wed, 31 Oct 2012 08:23:05 +0000 (+0100) Subject: Invert two sides of if expression in SET to avoid a lookup. X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/973cb21a0152642ec904cf8f8ab238a31e6ebaa9?ds=sidebyside;hp=b16e423430465013c14af1550f29e7c25c3a433c Invert two sides of if expression in SET to avoid a lookup. Because of the short circuit behavior of && inverting the two sides of the if expression avoids an hash table lookup if the non-EX variant of SET is called. Thanks to Weibin Yao (@yaoweibin on github) for spotting this. --- diff --git a/src/t_string.c b/src/t_string.c index 1e29a613..ba427961 100644 --- a/src/t_string.c +++ b/src/t_string.c @@ -26,7 +26,7 @@ void setGenericCommand(redisClient *c, int nx, robj *key, robj *val, robj *expir if (unit == UNIT_SECONDS) milliseconds *= 1000; } - if (lookupKeyWrite(c->db,key) != NULL && nx) { + if (nx && lookupKeyWrite(c->db,key) != NULL) { addReply(c,shared.czero); return; }