]> git.saurik.com Git - redis.git/blobdiff - src/db.c
TTL API change: TTL returns -2 for non existing keys.
[redis.git] / src / db.c
index 9fe9a003ce57e7b316ac69e20c5b4b00e3b4e894..a73d1fbf5e0dc75c5d38379f33ce6f7bffd2d642 100644 (file)
--- a/src/db.c
+++ b/src/db.c
@@ -614,6 +614,13 @@ void ttlGenericCommand(redisClient *c, int output_ms) {
     long long expire, ttl = -1;
 
     expire = getExpire(c->db,c->argv[1]);
     long long expire, ttl = -1;
 
     expire = getExpire(c->db,c->argv[1]);
+    /* If the key does not exist at all, return -2 */
+    if (expire == -1 && lookupKeyRead(c->db,c->argv[1]) == NULL) {
+        addReplyLongLong(c,-2);
+        return;
+    }
+    /* The key exists. Return -1 if it has no expire, or the actual
+     * TTL value otherwise. */
     if (expire != -1) {
         ttl = expire-mstime();
         if (ttl < 0) ttl = -1;
     if (expire != -1) {
         ttl = expire-mstime();
         if (ttl < 0) ttl = -1;