redis-cli --bigkeys fixed to handle non-printable key names
This commit is contained in:
parent
5977a94842
commit
6f8a8647de
@ -7246,7 +7246,9 @@ static void getKeyTypes(dict *types_dict, redisReply *keys, typeinfo **types) {
|
||||
|
||||
/* Pipeline TYPE commands */
|
||||
for(i=0;i<keys->elements;i++) {
|
||||
redisAppendCommand(context, "TYPE %s", keys->element[i]->str);
|
||||
const char* argv[] = {"TYPE", keys->element[i]->str};
|
||||
size_t lens[] = {4, keys->element[i]->len};
|
||||
redisAppendCommandArgv(context, 2, argv, lens);
|
||||
}
|
||||
|
||||
/* Retrieve types */
|
||||
@ -7292,15 +7294,21 @@ static void getKeySizes(redisReply *keys, typeinfo **types,
|
||||
if(!types[i] || (!types[i]->sizecmd && !memkeys))
|
||||
continue;
|
||||
|
||||
if (!memkeys)
|
||||
redisAppendCommand(context, "%s %s",
|
||||
types[i]->sizecmd, keys->element[i]->str);
|
||||
else if (memkeys_samples==0)
|
||||
redisAppendCommand(context, "%s %s %s",
|
||||
"MEMORY", "USAGE", keys->element[i]->str);
|
||||
else
|
||||
redisAppendCommand(context, "%s %s %s SAMPLES %u",
|
||||
"MEMORY", "USAGE", keys->element[i]->str, memkeys_samples);
|
||||
if (!memkeys) {
|
||||
const char* argv[] = {types[i]->sizecmd, keys->element[i]->str};
|
||||
size_t lens[] = {strlen(types[i]->sizecmd), keys->element[i]->len};
|
||||
redisAppendCommandArgv(context, 2, argv, lens);
|
||||
} else if (memkeys_samples==0) {
|
||||
const char* argv[] = {"MEMORY", "USAGE", keys->element[i]->str};
|
||||
size_t lens[] = {6, 5, keys->element[i]->len};
|
||||
redisAppendCommandArgv(context, 3, argv, lens);
|
||||
} else {
|
||||
sds samplesstr = sdsfromlonglong(memkeys_samples);
|
||||
const char* argv[] = {"MEMORY", "USAGE", keys->element[i]->str, "SAMPLES", samplesstr};
|
||||
size_t lens[] = {6, 5, keys->element[i]->len, 7, sdslen(samplesstr)};
|
||||
redisAppendCommandArgv(context, 5, argv, lens);
|
||||
sdsfree(samplesstr);
|
||||
}
|
||||
}
|
||||
|
||||
/* Retrieve sizes */
|
||||
@ -7396,20 +7404,20 @@ static void findBigKeys(int memkeys, unsigned memkeys_samples) {
|
||||
sampled++;
|
||||
|
||||
if(type->biggest<sizes[i]) {
|
||||
printf(
|
||||
"[%05.2f%%] Biggest %-6s found so far '%s' with %llu %s\n",
|
||||
pct, type->name, keys->element[i]->str, sizes[i],
|
||||
!memkeys? type->sizeunit: "bytes");
|
||||
|
||||
/* Keep track of biggest key name for this type */
|
||||
if (type->biggest_key)
|
||||
sdsfree(type->biggest_key);
|
||||
type->biggest_key = sdsnew(keys->element[i]->str);
|
||||
type->biggest_key = sdscatrepr(sdsempty(), keys->element[i]->str, keys->element[i]->len);
|
||||
if(!type->biggest_key) {
|
||||
fprintf(stderr, "Failed to allocate memory for key!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf(
|
||||
"[%05.2f%%] Biggest %-6s found so far '%s' with %llu %s\n",
|
||||
pct, type->name, type->biggest_key, sizes[i],
|
||||
!memkeys? type->sizeunit: "bytes");
|
||||
|
||||
/* Keep track of the biggest size for this type */
|
||||
type->biggest = sizes[i];
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user