Avoid changing setKey() API after #6679 fix.
This commit is contained in:
parent
9d1baa0705
commit
5b9d3ac6c6
@ -754,7 +754,7 @@ void bitopCommand(client *c) {
|
|||||||
/* Store the computed value into the target key */
|
/* Store the computed value into the target key */
|
||||||
if (maxlen) {
|
if (maxlen) {
|
||||||
o = createObject(OBJ_STRING,res);
|
o = createObject(OBJ_STRING,res);
|
||||||
setKey(c->db,targetkey,o,0);
|
setKey(c->db,targetkey,o);
|
||||||
notifyKeyspaceEvent(NOTIFY_STRING,"set",targetkey,c->db->id);
|
notifyKeyspaceEvent(NOTIFY_STRING,"set",targetkey,c->db->id);
|
||||||
decrRefCount(o);
|
decrRefCount(o);
|
||||||
} else if (dbDelete(c->db,targetkey)) {
|
} else if (dbDelete(c->db,targetkey)) {
|
||||||
|
12
src/db.c
12
src/db.c
@ -216,10 +216,11 @@ void dbOverwrite(redisDb *db, robj *key, robj *val) {
|
|||||||
*
|
*
|
||||||
* 1) The ref count of the value object is incremented.
|
* 1) The ref count of the value object is incremented.
|
||||||
* 2) clients WATCHing for the destination key notified.
|
* 2) clients WATCHing for the destination key notified.
|
||||||
* 3) The expire time of the key is reset (the key is made persistent).
|
* 3) The expire time of the key is reset (the key is made persistent),
|
||||||
|
* unless 'keepttl' is true.
|
||||||
*
|
*
|
||||||
* All the new keys in the database should be created via this interface. */
|
* All the new keys in the database should be created via this interface. */
|
||||||
void setKey(redisDb *db, robj *key, robj *val, int keepttl) {
|
void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl) {
|
||||||
if (lookupKeyWrite(db,key) == NULL) {
|
if (lookupKeyWrite(db,key) == NULL) {
|
||||||
dbAdd(db,key,val);
|
dbAdd(db,key,val);
|
||||||
} else {
|
} else {
|
||||||
@ -230,6 +231,13 @@ void setKey(redisDb *db, robj *key, robj *val, int keepttl) {
|
|||||||
signalModifiedKey(db,key);
|
signalModifiedKey(db,key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Common case for genericSetKey() where the TTL is not retained. */
|
||||||
|
void setKey(redisDb *db, robj *key, robj *val) {
|
||||||
|
genericSetKey(db,key,val,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return true if the specified key exists in the specified database.
|
||||||
|
* LRU/LFU info is not updated in any way. */
|
||||||
int dbExists(redisDb *db, robj *key) {
|
int dbExists(redisDb *db, robj *key) {
|
||||||
return dictFind(db->dict,key->ptr) != NULL;
|
return dictFind(db->dict,key->ptr) != NULL;
|
||||||
}
|
}
|
||||||
|
@ -657,7 +657,7 @@ void georadiusGeneric(client *c, int flags) {
|
|||||||
|
|
||||||
if (returned_items) {
|
if (returned_items) {
|
||||||
zsetConvertToZiplistIfNeeded(zobj,maxelelen);
|
zsetConvertToZiplistIfNeeded(zobj,maxelelen);
|
||||||
setKey(c->db,storekey,zobj,0);
|
setKey(c->db,storekey,zobj);
|
||||||
decrRefCount(zobj);
|
decrRefCount(zobj);
|
||||||
notifyKeyspaceEvent(NOTIFY_ZSET,"georadiusstore",storekey,
|
notifyKeyspaceEvent(NOTIFY_ZSET,"georadiusstore",storekey,
|
||||||
c->db->id);
|
c->db->id);
|
||||||
|
@ -2107,7 +2107,7 @@ RedisModuleString *RM_RandomKey(RedisModuleCtx *ctx) {
|
|||||||
int RM_StringSet(RedisModuleKey *key, RedisModuleString *str) {
|
int RM_StringSet(RedisModuleKey *key, RedisModuleString *str) {
|
||||||
if (!(key->mode & REDISMODULE_WRITE) || key->iter) return REDISMODULE_ERR;
|
if (!(key->mode & REDISMODULE_WRITE) || key->iter) return REDISMODULE_ERR;
|
||||||
RM_DeleteKey(key);
|
RM_DeleteKey(key);
|
||||||
setKey(key->db,key->key,str,0);
|
setKey(key->db,key->key,str);
|
||||||
key->value = str;
|
key->value = str;
|
||||||
return REDISMODULE_OK;
|
return REDISMODULE_OK;
|
||||||
}
|
}
|
||||||
@ -2187,7 +2187,7 @@ int RM_StringTruncate(RedisModuleKey *key, size_t newlen) {
|
|||||||
if (key->value == NULL) {
|
if (key->value == NULL) {
|
||||||
/* Empty key: create it with the new size. */
|
/* Empty key: create it with the new size. */
|
||||||
robj *o = createObject(OBJ_STRING,sdsnewlen(NULL, newlen));
|
robj *o = createObject(OBJ_STRING,sdsnewlen(NULL, newlen));
|
||||||
setKey(key->db,key->key,o,0);
|
setKey(key->db,key->key,o);
|
||||||
key->value = o;
|
key->value = o;
|
||||||
decrRefCount(o);
|
decrRefCount(o);
|
||||||
} else {
|
} else {
|
||||||
@ -3571,7 +3571,7 @@ int RM_ModuleTypeSetValue(RedisModuleKey *key, moduleType *mt, void *value) {
|
|||||||
if (!(key->mode & REDISMODULE_WRITE) || key->iter) return REDISMODULE_ERR;
|
if (!(key->mode & REDISMODULE_WRITE) || key->iter) return REDISMODULE_ERR;
|
||||||
RM_DeleteKey(key);
|
RM_DeleteKey(key);
|
||||||
robj *o = createModuleObject(mt,value);
|
robj *o = createModuleObject(mt,value);
|
||||||
setKey(key->db,key->key,o,0);
|
setKey(key->db,key->key,o);
|
||||||
decrRefCount(o);
|
decrRefCount(o);
|
||||||
key->value = o;
|
key->value = o;
|
||||||
return REDISMODULE_OK;
|
return REDISMODULE_OK;
|
||||||
|
@ -2025,7 +2025,8 @@ int objectSetLRUOrLFU(robj *val, long long lfu_freq, long long lru_idle,
|
|||||||
#define LOOKUP_NOTOUCH (1<<0)
|
#define LOOKUP_NOTOUCH (1<<0)
|
||||||
void dbAdd(redisDb *db, robj *key, robj *val);
|
void dbAdd(redisDb *db, robj *key, robj *val);
|
||||||
void dbOverwrite(redisDb *db, robj *key, robj *val);
|
void dbOverwrite(redisDb *db, robj *key, robj *val);
|
||||||
void setKey(redisDb *db, robj *key, robj *val, int keepttl);
|
void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl);
|
||||||
|
void setKey(redisDb *db, robj *key, robj *val);
|
||||||
int dbExists(redisDb *db, robj *key);
|
int dbExists(redisDb *db, robj *key);
|
||||||
robj *dbRandomKey(redisDb *db);
|
robj *dbRandomKey(redisDb *db);
|
||||||
int dbSyncDelete(redisDb *db, robj *key);
|
int dbSyncDelete(redisDb *db, robj *key);
|
||||||
|
@ -570,7 +570,7 @@ void sortCommand(client *c) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (outputlen) {
|
if (outputlen) {
|
||||||
setKey(c->db,storekey,sobj,0);
|
setKey(c->db,storekey,sobj);
|
||||||
notifyKeyspaceEvent(NOTIFY_LIST,"sortstore",storekey,
|
notifyKeyspaceEvent(NOTIFY_LIST,"sortstore",storekey,
|
||||||
c->db->id);
|
c->db->id);
|
||||||
server.dirty += outputlen;
|
server.dirty += outputlen;
|
||||||
|
@ -84,7 +84,7 @@ void setGenericCommand(client *c, int flags, robj *key, robj *val, robj *expire,
|
|||||||
addReply(c, abort_reply ? abort_reply : shared.null[c->resp]);
|
addReply(c, abort_reply ? abort_reply : shared.null[c->resp]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setKey(c->db,key,val,flags & OBJ_SET_KEEPTTL);
|
genericSetKey(c->db,key,val,flags & OBJ_SET_KEEPTTL);
|
||||||
server.dirty++;
|
server.dirty++;
|
||||||
if (expire) setExpire(c,c->db,key,mstime()+milliseconds);
|
if (expire) setExpire(c,c->db,key,mstime()+milliseconds);
|
||||||
notifyKeyspaceEvent(NOTIFY_STRING,"set",key,c->db->id);
|
notifyKeyspaceEvent(NOTIFY_STRING,"set",key,c->db->id);
|
||||||
@ -183,7 +183,7 @@ void getCommand(client *c) {
|
|||||||
void getsetCommand(client *c) {
|
void getsetCommand(client *c) {
|
||||||
if (getGenericCommand(c) == C_ERR) return;
|
if (getGenericCommand(c) == C_ERR) return;
|
||||||
c->argv[2] = tryObjectEncoding(c->argv[2]);
|
c->argv[2] = tryObjectEncoding(c->argv[2]);
|
||||||
setKey(c->db,c->argv[1],c->argv[2],0);
|
setKey(c->db,c->argv[1],c->argv[2]);
|
||||||
notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[1],c->db->id);
|
notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[1],c->db->id);
|
||||||
server.dirty++;
|
server.dirty++;
|
||||||
}
|
}
|
||||||
@ -328,7 +328,7 @@ void msetGenericCommand(client *c, int nx) {
|
|||||||
|
|
||||||
for (j = 1; j < c->argc; j += 2) {
|
for (j = 1; j < c->argc; j += 2) {
|
||||||
c->argv[j+1] = tryObjectEncoding(c->argv[j+1]);
|
c->argv[j+1] = tryObjectEncoding(c->argv[j+1]);
|
||||||
setKey(c->db,c->argv[j],c->argv[j+1],0);
|
setKey(c->db,c->argv[j],c->argv[j+1]);
|
||||||
notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[j],c->db->id);
|
notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[j],c->db->id);
|
||||||
}
|
}
|
||||||
server.dirty += (c->argc-1)/2;
|
server.dirty += (c->argc-1)/2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user