From: antirez Date: Sun, 22 Mar 2009 13:54:14 +0000 (+0100) Subject: INFO fixed, MGET implemented, redis-cli implements INFO/MGET X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/70003d28b8d7430f9e0104575e7160be2f264602 INFO fixed, MGET implemented, redis-cli implements INFO/MGET --- diff --git a/redis-cli.c b/redis-cli.c index 5444ac00..f6bf739b 100644 --- a/redis-cli.c +++ b/redis-cli.c @@ -103,7 +103,8 @@ static struct redisCommand cmdTable[] = { {"flushdb",1,REDIS_CMD_INLINE|REDIS_CMD_RETCODEREPLY}, {"flushall",1,REDIS_CMD_INLINE|REDIS_CMD_RETCODEREPLY}, {"sort",-2,REDIS_CMD_INLINE|REDIS_CMD_MULTIBULKREPLY}, - {"version",1,REDIS_CMD_INLINE|REDIS_CMD_SINGLELINEREPLY}, + {"info",1,REDIS_CMD_INLINE|REDIS_CMD_BULKREPLY}, + {"mget",-2,REDIS_CMD_INLINE|REDIS_CMD_MULTIBULKREPLY}, {NULL,0,0} }; diff --git a/redis.c b/redis.c index 7c2b9a40..04504eec 100644 --- a/redis.c +++ b/redis.c @@ -281,6 +281,7 @@ static void flushallCommand(redisClient *c); static void sortCommand(redisClient *c); static void lremCommand(redisClient *c); static void infoCommand(redisClient *c); +static void mgetCommand(redisClient *c); /*================================= Globals ================================= */ @@ -294,6 +295,7 @@ static struct redisCommand cmdTable[] = { {"exists",existsCommand,2,REDIS_CMD_INLINE}, {"incr",incrCommand,2,REDIS_CMD_INLINE}, {"decr",decrCommand,2,REDIS_CMD_INLINE}, + {"mget",mgetCommand,-2,REDIS_CMD_INLINE}, {"rpush",rpushCommand,3,REDIS_CMD_BULK}, {"lpush",lpushCommand,3,REDIS_CMD_BULK}, {"rpop",rpopCommand,2,REDIS_CMD_INLINE}, @@ -1696,6 +1698,29 @@ static void getCommand(redisClient *c) { } } +static void mgetCommand(redisClient *c) { + dictEntry *de; + int j; + + addReplySds(c,sdscatprintf(sdsempty(),"%d\r\n",c->argc-1)); + for (j = 1; j < c->argc; j++) { + de = dictFind(c->dict,c->argv[j]); + if (de == NULL) { + addReply(c,shared.minus1); + } else { + robj *o = dictGetEntryVal(de); + + if (o->type != REDIS_STRING) { + addReply(c,shared.minus1); + } else { + addReplySds(c,sdscatprintf(sdsempty(),"%d\r\n",(int)sdslen(o->ptr))); + addReply(c,o); + addReply(c,shared.crlf); + } + } + } +} + static void incrDecrCommand(redisClient *c, int incr) { dictEntry *de; long long value; @@ -2790,6 +2815,7 @@ static void infoCommand(redisClient *c) { ); addReplySds(c,sdscatprintf(sdsempty(),"%d\r\n",sdslen(info))); addReplySds(c,info); + addReply(c,shared.crlf); } /* =============================== Replication ============================= */