handled DEL command as a special optimized case for disk store

This commit is contained in:
antirez
2010-12-30 19:16:59 +01:00
parent 8d51fb6a80
commit 3122229228
4 changed files with 34 additions and 5 deletions

View File

@@ -205,10 +205,22 @@ void delCommand(redisClient *c) {
int deleted = 0, j;
for (j = 1; j < c->argc; j++) {
if (server.ds_enabled) {
lookupKeyRead(c->db,c->argv[j]);
/* FIXME: this can be optimized a lot, no real need to load
* a possibly huge value. */
}
if (dbDelete(c->db,c->argv[j])) {
signalModifiedKey(c->db,c->argv[j]);
server.dirty++;
deleted++;
} else if (server.ds_enabled) {
if (cacheKeyMayExist(c->db,c->argv[j]) &&
dsExists(c->db,c->argv[j]))
{
cacheScheduleForFlush(c->db,c->argv[j]);
deleted = 1;
}
}
}
addReplyLongLong(c,deleted);