]> git.saurik.com Git - redis.git/blobdiff - src/db.c
for performance reasons only set the debug hook if the time limit is enabled.
[redis.git] / src / db.c
index 7d323924508c7ef8e002842fc956796998ae5891..354f904569b71a47ce693aaa2ea1f4a47949a9c8 100644 (file)
--- a/src/db.c
+++ b/src/db.c
@@ -317,7 +317,7 @@ void existsCommand(redisClient *c) {
 void selectCommand(redisClient *c) {
     int id = atoi(c->argv[1]->ptr);
 
-    if (server.cluster_enabled) {
+    if (server.cluster_enabled && id != 0) {
         addReplyError(c,"SELECT is not allowed in cluster mode");
         return;
     }
@@ -725,14 +725,18 @@ void SlotToKeyDel(robj *key) {
     zslDelete(server.cluster.slots_to_keys,hashslot,key);
 }
 
-robj *GetKeyInSlot(unsigned int hashslot) {
+unsigned int GetKeysInSlot(unsigned int hashslot, robj **keys, unsigned int count) {
     zskiplistNode *n;
     zrangespec range;
+    int j = 0;
 
     range.min = range.max = hashslot;
     range.minex = range.maxex = 0;
     
     n = zslFirstInRange(server.cluster.slots_to_keys, range);
-    if (!n) return NULL;
-    return n->obj;
+    while(n && n->score == hashslot && count--) {
+        keys[j++] = n->obj;
+        n = n->level[0].forward;
+    }
+    return j;
 }