Commit f4f06efc authored by Pieter Noordhuis's avatar Pieter Noordhuis
Browse files

don't load value from VM for EXISTS

parent a0e7e5f5
...@@ -15,7 +15,6 @@ Virtual Memory sub-TODO: ...@@ -15,7 +15,6 @@ Virtual Memory sub-TODO:
* Check if the page selection algorithm is working well * Check if the page selection algorithm is working well
* Divide swappability of objects by refcount * Divide swappability of objects by refcount
* Use multiple open FDs against the VM file, one for thread. * Use multiple open FDs against the VM file, one for thread.
* EXISTS should avoid loading the object if possible without making the code too specialized.
* vm-min-age <seconds> option * vm-min-age <seconds> option
* Make sure objects loaded from the VM are specially encoded when possible. * Make sure objects loaded from the VM are specially encoded when possible.
* Check what happens performance-wise if instead to create threads again and again the same threads are reused forever. Note: this requires a way to disable this clients in the child, but waiting for empty new jobs queue can be enough. * Check what happens performance-wise if instead to create threads again and again the same threads are reused forever. Note: this requires a way to disable this clients in the child, but waiting for empty new jobs queue can be enough.
......
...@@ -4343,7 +4343,12 @@ static void delCommand(redisClient *c) { ...@@ -4343,7 +4343,12 @@ static void delCommand(redisClient *c) {
} }
static void existsCommand(redisClient *c) { static void existsCommand(redisClient *c) {
addReply(c,lookupKeyRead(c->db,c->argv[1]) ? shared.cone : shared.czero); expireIfNeeded(c->db,c->argv[1]);
if (dictFind(c->db->dict,c->argv[1])) {
addReply(c, shared.cone);
} else {
addReply(c, shared.czero);
}
} }
static void selectCommand(redisClient *c) { static void selectCommand(redisClient *c) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment