From 884ca601b21ec6ef4d216ae850c0cf503f762623 Mon Sep 17 00:00:00 2001 From: judeng Date: Tue, 3 Jan 2023 15:37:47 +0800 Subject: Optimize the performance of msetnx command by call lookupkey only once (#11594) This is a small addition to #9640 It improves performance by avoiding double lookup of the the key. --- src/t_string.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/t_string.c') diff --git a/src/t_string.c b/src/t_string.c index 7209b3ba7..125f8ee86 100644 --- a/src/t_string.c +++ b/src/t_string.c @@ -553,6 +553,7 @@ void mgetCommand(client *c) { void msetGenericCommand(client *c, int nx) { int j; + int setkey_flags = 0; if ((c->argc % 2) == 0) { addReplyErrorArity(c); @@ -568,11 +569,12 @@ void msetGenericCommand(client *c, int nx) { return; } } + setkey_flags |= SETKEY_DOESNT_EXIST; } for (j = 1; j < c->argc; j += 2) { c->argv[j+1] = tryObjectEncoding(c->argv[j+1]); - setKey(c,c->db,c->argv[j],c->argv[j+1],0); + setKey(c, c->db, c->argv[j], c->argv[j + 1], setkey_flags); notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[j],c->db->id); } server.dirty += (c->argc-1)/2; -- cgit v1.2.1