From: antirez Date: Fri, 22 May 2009 13:55:38 +0000 (+0200) Subject: TTL command implemented X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/fd88489a417ba33e287b9ba4286328b6c18185df TTL command implemented --- diff --git a/Changelog b/Changelog index 08e26de8..bc4a8b64 100644 --- 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 diff --git a/redis-cli.c b/redis-cli.c index e977368b..85652d2c 100644 --- a/redis-cli.c +++ b/redis-cli.c @@ -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 397d9b7e..1e620a6c 100644 --- 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) {