Commit d4222e6b authored by antirez's avatar antirez
Browse files

DEBUG POPULATE two args form implemented.

The old DEBUG POPULATE form for automatic creation of test keys is:

    DEBUG POPULATE <count>

Now an additional form is available:

    DEBUG POPULATE <count> <prefix>

When prefix is not specified, it defaults to "key", so the keys are
named incrementally from key:0 to key:<count-1>. Otherwise the specified
prefix is used instead of "key".

The command is useful in order to populate different Redis instances
with key names guaranteed to don't collide. There are other debugging
uses, for example it is possible to add additional N keys using a count
of N and a random prefix at every call.
parent 35a8302b
...@@ -325,7 +325,8 @@ void debugCommand(redisClient *c) { ...@@ -325,7 +325,8 @@ void debugCommand(redisClient *c) {
(long long) sdslen(val->ptr), (long long) sdslen(val->ptr),
(long long) sdsavail(val->ptr)); (long long) sdsavail(val->ptr));
} }
} else if (!strcasecmp(c->argv[1]->ptr,"populate") && c->argc == 3) { } else if (!strcasecmp(c->argv[1]->ptr,"populate") &&
(c->argc == 3 || c->argc == 4)) {
long keys, j; long keys, j;
robj *key, *val; robj *key, *val;
char buf[128]; char buf[128];
...@@ -334,7 +335,8 @@ void debugCommand(redisClient *c) { ...@@ -334,7 +335,8 @@ void debugCommand(redisClient *c) {
return; return;
dictExpand(c->db->dict,keys); dictExpand(c->db->dict,keys);
for (j = 0; j < keys; j++) { for (j = 0; j < keys; j++) {
snprintf(buf,sizeof(buf),"key:%lu",j); snprintf(buf,sizeof(buf),"%s:%lu",
(c->argc == 3) ? "key" : c->argv[3]->ptr, j);
key = createStringObject(buf,strlen(buf)); key = createStringObject(buf,strlen(buf));
if (lookupKeyRead(c->db,key) != NULL) { if (lookupKeyRead(c->db,key) != NULL) {
decrRefCount(key); decrRefCount(key);
......
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