Commit e50090aa authored by antirez's avatar antirez
Browse files

HSCAN implemented.

parent 4a1f1cc0
...@@ -469,7 +469,7 @@ void scanGenericCommand(redisClient *c, robj *o) { ...@@ -469,7 +469,7 @@ void scanGenericCommand(redisClient *c, robj *o) {
listAddNodeTail(keys, listAddNodeTail(keys,
(vstr != NULL) ? createStringObject((char*)vstr,vlen) : (vstr != NULL) ? createStringObject((char*)vstr,vlen) :
createStringObjectFromLongLong(vll)); createStringObjectFromLongLong(vll));
ziplistNext(o->ptr,p); p = ziplistNext(o->ptr,p);
} }
} else { } else {
redisPanic("Not handled encoding in SCAN."); redisPanic("Not handled encoding in SCAN.");
......
...@@ -195,6 +195,7 @@ struct redisCommand redisCommandTable[] = { ...@@ -195,6 +195,7 @@ struct redisCommand redisCommandTable[] = {
{"hvals",hvalsCommand,2,"rS",0,NULL,1,1,1,0,0}, {"hvals",hvalsCommand,2,"rS",0,NULL,1,1,1,0,0},
{"hgetall",hgetallCommand,2,"r",0,NULL,1,1,1,0,0}, {"hgetall",hgetallCommand,2,"r",0,NULL,1,1,1,0,0},
{"hexists",hexistsCommand,3,"r",0,NULL,1,1,1,0,0}, {"hexists",hexistsCommand,3,"r",0,NULL,1,1,1,0,0},
{"hscan",hscanCommand,-3,"rR",0,NULL,1,1,1,0,0},
{"incrby",incrbyCommand,3,"wm",0,NULL,1,1,1,0,0}, {"incrby",incrbyCommand,3,"wm",0,NULL,1,1,1,0,0},
{"decrby",decrbyCommand,3,"wm",0,NULL,1,1,1,0,0}, {"decrby",decrbyCommand,3,"wm",0,NULL,1,1,1,0,0},
{"incrbyfloat",incrbyfloatCommand,3,"wm",0,NULL,1,1,1,0,0}, {"incrbyfloat",incrbyfloatCommand,3,"wm",0,NULL,1,1,1,0,0},
......
...@@ -1344,6 +1344,7 @@ void hkeysCommand(redisClient *c); ...@@ -1344,6 +1344,7 @@ void hkeysCommand(redisClient *c);
void hvalsCommand(redisClient *c); void hvalsCommand(redisClient *c);
void hgetallCommand(redisClient *c); void hgetallCommand(redisClient *c);
void hexistsCommand(redisClient *c); void hexistsCommand(redisClient *c);
void hscanCommand(redisClient *c);
void configCommand(redisClient *c); void configCommand(redisClient *c);
void hincrbyCommand(redisClient *c); void hincrbyCommand(redisClient *c);
void hincrbyfloatCommand(redisClient *c); void hincrbyfloatCommand(redisClient *c);
......
...@@ -759,3 +759,11 @@ void hexistsCommand(redisClient *c) { ...@@ -759,3 +759,11 @@ void hexistsCommand(redisClient *c) {
addReply(c, hashTypeExists(o,c->argv[2]) ? shared.cone : shared.czero); addReply(c, hashTypeExists(o,c->argv[2]) ? shared.cone : shared.czero);
} }
void hscanCommand(redisClient *c) {
robj *o;
if ((o= lookupKeyReadOrReply(c,c->argv[1],shared.emptyscan)) == NULL ||
checkType(c,o,REDIS_HASH)) return;
scanGenericCommand(c,o);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment