Merge pull request #4679 from youjiali1995/fix-lru

Some commands will udpate lfu-counter many times in one call.
This commit is contained in:
Salvatore Sanfilippo 2018-03-22 16:26:01 +01:00 committed by GitHub
commit bad679137e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -187,9 +187,6 @@ void dbOverwrite(redisDb *db, robj *key, robj *val) {
int saved_lru = old->lru; int saved_lru = old->lru;
dictReplace(db->dict, key->ptr, val); dictReplace(db->dict, key->ptr, val);
val->lru = saved_lru; val->lru = saved_lru;
/* LFU should be not only copied but also updated
* when a key is overwritten. */
updateLFU(val);
} else { } else {
dictReplace(db->dict, key->ptr, val); dictReplace(db->dict, key->ptr, val);
} }
@ -1359,7 +1356,7 @@ int *georadiusGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numk
for (i = 5; i < argc; i++) { for (i = 5; i < argc; i++) {
char *arg = argv[i]->ptr; char *arg = argv[i]->ptr;
/* For the case when user specifies both "store" and "storedist" options, the /* For the case when user specifies both "store" and "storedist" options, the
* second key specified would override the first key. This behavior is kept * second key specified would override the first key. This behavior is kept
* the same as in georadiusCommand method. * the same as in georadiusCommand method.
*/ */
if ((!strcasecmp(arg, "store") || !strcasecmp(arg, "storedist")) && ((i+1) < argc)) { if ((!strcasecmp(arg, "store") || !strcasecmp(arg, "storedist")) && ((i+1) < argc)) {
@ -1380,7 +1377,7 @@ int *georadiusGetKeys(struct redisCommand *cmd, robj **argv, int argc, int *numk
if(num > 1) { if(num > 1) {
keys[1] = stored_key; keys[1] = stored_key;
} }
*numkeys = num; *numkeys = num;
return keys; return keys;
} }