]> git.saurik.com Git - redis.git/commitdiff
KEYS now returns a multi bulk reply
authorantirez <antirez@gmail.com>
Mon, 1 Mar 2010 22:46:24 +0000 (23:46 +0100)
committerantirez <antirez@gmail.com>
Mon, 1 Mar 2010 22:46:24 +0000 (23:46 +0100)
redis.c
test-redis.tcl

diff --git a/redis.c b/redis.c
index 319a0afff0aea1adb46954e5fb5e022e17e0027d..c10fb03af95b2ad483c395baecbd19c54eba1667 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -3820,7 +3820,7 @@ static void keysCommand(redisClient *c) {
     dictEntry *de;
     sds pattern = c->argv[1]->ptr;
     int plen = sdslen(pattern);
-    unsigned long numkeys = 0, keyslen = 0;
+    unsigned long numkeys = 0;
     robj *lenobj = createObject(REDIS_STRING,NULL);
 
     di = dictGetIterator(c->db->dict);
@@ -3833,17 +3833,15 @@ static void keysCommand(redisClient *c) {
         if ((pattern[0] == '*' && pattern[1] == '\0') ||
             stringmatchlen(pattern,plen,key,sdslen(key),0)) {
             if (expireIfNeeded(c->db,keyobj) == 0) {
-                if (numkeys != 0)
-                    addReply(c,shared.space);
+                addReplyBulkLen(c,keyobj);
                 addReply(c,keyobj);
+                addReply(c,shared.crlf);
                 numkeys++;
-                keyslen += sdslen(key);
             }
         }
     }
     dictReleaseIterator(di);
-    lenobj->ptr = sdscatprintf(sdsempty(),"$%lu\r\n",keyslen+(numkeys ? (numkeys-1) : 0));
-    addReply(c,shared.crlf);
+    lenobj->ptr = sdscatprintf(sdsempty(),"*%lu\r\n",numkeys);
 }
 
 static void dbsizeCommand(redisClient *c) {
index 83dfd0b4a2db6233a33188a1ee313d78ef4f6bba..6eea1189ff23757506af1dc1886162332329a71c 100644 (file)
@@ -178,7 +178,7 @@ proc createComplexDataset {r ops} {
 }
 
 proc datasetDigest r {
-    set keys [lsort [split [$r keys *] " "]]
+    set keys [lsort [$r keys *]]
     set digest {}
     foreach k $keys {
         set t [$r type $k]
@@ -204,7 +204,7 @@ proc datasetDigest r {
                     set aux [::sha1::sha1 -hex [$r zrange $k 0 -1]]
                 }
             } default {
-                error "Type not supported"
+                error "Type not supported: $t"
             }
         }
         if {$aux eq {}} continue