]> git.saurik.com Git - redis.git/commitdiff
TTL command implemented
authorantirez <antirez@gmail.com>
Fri, 22 May 2009 13:55:38 +0000 (15:55 +0200)
committerantirez <antirez@gmail.com>
Fri, 22 May 2009 13:55:38 +0000 (15:55 +0200)
Changelog
redis-cli.c
redis.c

index 08e26de879ac06e3c3932bfadc8c969faf6a70f3..bc4a8b642614a3506fc99cb4d810d23672b0121e 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,16 @@
+2009-05-22 S*STORE now return the cardinality of the resulting set
+2009-05-22 rubyredis more compatible with Redis-rb
+2009-05-21 minor indentation fix
+2009-05-21 timeout support and Redis-rb compatibility aliases implemented in RubyRedis
+2009-05-21 RubyRedis info postprocessor rewritten in a more functional way
+2009-05-21 dead code removed from RubyRedis
+2009-05-21 command postprocessing implemented into RubyRedis
+2009-05-20 Automagically reconnection of RubyRedis
+2009-05-20 RubyRedis: Array alike operators implemented
+2009-05-20 random testing code removed
+2009-05-20 RubyRedis DB selection forced at object creation
+2009-05-20 Initial version of an alternative Ruby client added
+2009-05-20 SDIFF / SDIFFSTORE added to doc
 2009-05-20 Aman Gupta changes merged
 2009-05-20 Merge git://github.com/tmm1/redis
 2009-05-19 Allow timeout=0 config to disable client timeouts
index e977368b19c7dc6faefe492cc7bfffd047572223..85652d2c16d56bdffb934b89d5584a098e723127 100644 (file)
@@ -109,6 +109,7 @@ static struct redisCommand cmdTable[] = {
     {"info",1,REDIS_CMD_INLINE},
     {"mget",-2,REDIS_CMD_INLINE},
     {"expire",3,REDIS_CMD_INLINE},
+    {"ttl",2,REDIS_CMD_INLINE},
     {NULL,0,0}
 };
 
diff --git a/redis.c b/redis.c
index 397d9b7e546c56c42ffbf5f91ede08e7a69b7215..1e620a6c00bcaa31998731a460a6e1c8545828cb 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -361,6 +361,7 @@ static void mgetCommand(redisClient *c);
 static void monitorCommand(redisClient *c);
 static void expireCommand(redisClient *c);
 static void getSetCommand(redisClient *c);
+static void ttlCommand(redisClient *c);
 
 /*================================= Globals ================================= */
 
@@ -422,6 +423,7 @@ static struct redisCommand cmdTable[] = {
     {"info",infoCommand,1,REDIS_CMD_INLINE},
     {"monitor",monitorCommand,1,REDIS_CMD_INLINE},
     {"expire",expireCommand,3,REDIS_CMD_INLINE},
+    {"ttl",ttlCommand,2,REDIS_CMD_INLINE},
     {NULL,NULL,0,0}
 };
 
@@ -3602,6 +3604,18 @@ static void expireCommand(redisClient *c) {
     }
 }
 
+static void ttlCommand(redisClient *c) {
+    time_t expire;
+    int ttl = -1;
+
+    expire = getExpire(c->db,c->argv[1]);
+    if (expire != -1) {
+        ttl = (int) (expire-time(NULL));
+        if (ttl < 0) ttl = -1;
+    }
+    addReplySds(c,sdscatprintf(sdsempty(),":%d\r\n",ttl));
+}
+
 /* =============================== Replication  ============================= */
 
 static int syncWrite(int fd, char *ptr, ssize_t size, int timeout) {