X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/f48cd4b90cc298a74ded3f7adc45740a4dd1a9c1..bd376d13f820b168954ac6683b5197a4ed72f03b:/src/db.c diff --git a/src/db.c b/src/db.c index f7d93e08..a0775af9 100644 --- a/src/db.c +++ b/src/db.c @@ -42,17 +42,22 @@ robj *lookupKey(redisDb *db, robj *key) { * a copy on write madness. */ if (server.rdb_child_pid == -1 && server.aof_child_pid == -1) val->lru = server.lruclock; - server.stat_keyspace_hits++; return val; } else { - server.stat_keyspace_misses++; return NULL; } } robj *lookupKeyRead(redisDb *db, robj *key) { + robj *val; + expireIfNeeded(db,key); - return lookupKey(db,key); + val = lookupKey(db,key); + if (val == NULL) + server.stat_keyspace_misses++; + else + server.stat_keyspace_hits++; + return val; } robj *lookupKeyWrite(redisDb *db, robj *key) { @@ -110,7 +115,7 @@ void setKey(redisDb *db, robj *key, robj *val) { } incrRefCount(val); removeExpire(db,key); - touchWatchedKey(db,key); + signalModifiedKey(db,key); } int dbExists(redisDb *db, robj *key) { @@ -483,9 +488,10 @@ long long getExpire(redisDb *db, robj *key) { void propagateExpire(redisDb *db, robj *key) { robj *argv[2]; - argv[0] = createStringObject("DEL",3); + argv[0] = shared.del; argv[1] = key; - incrRefCount(key); + incrRefCount(argv[0]); + incrRefCount(argv[1]); if (server.aof_state != REDIS_AOF_OFF) feedAppendOnlyFile(server.delCommand,db->id,argv,2);