diff options
author | judeng <abc3844@126.com> | 2023-01-03 15:37:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-03 09:37:47 +0200 |
commit | 884ca601b21ec6ef4d216ae850c0cf503f762623 (patch) | |
tree | af538c98ce6faafb5f26963bf014b7687b383f54 /src | |
parent | d2d6bc18ebc63265c2ee55ed79ab6ad2044b3bc3 (diff) | |
download | redis-884ca601b21ec6ef4d216ae850c0cf503f762623.tar.gz |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/t_string.c | 4 |
1 files changed, 3 insertions, 1 deletions
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; |