Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
6f8a8647
Commit
6f8a8647
authored
Jul 05, 2020
by
Oran Agra
Browse files
redis-cli --bigkeys fixed to handle non-printable key names
parent
5977a948
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis-cli.c
View file @
6f8a8647
...
@@ -7246,7 +7246,9 @@ static void getKeyTypes(dict *types_dict, redisReply *keys, typeinfo **types) {
...
@@ -7246,7 +7246,9 @@ static void getKeyTypes(dict *types_dict, redisReply *keys, typeinfo **types) {
/* Pipeline TYPE commands */
/* Pipeline TYPE commands */
for(i=0;i<keys->elements;i++) {
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 */
/* Retrieve types */
...
@@ -7292,15 +7294,21 @@ static void getKeySizes(redisReply *keys, typeinfo **types,
...
@@ -7292,15 +7294,21 @@ static void getKeySizes(redisReply *keys, typeinfo **types,
if(!types[i] || (!types[i]->sizecmd && !memkeys))
if(!types[i] || (!types[i]->sizecmd && !memkeys))
continue;
continue;
if (!memkeys)
if (!memkeys) {
redisAppendCommand(context, "%s %s",
const char* argv[] = {types[i]->sizecmd, keys->element[i]->str};
types[i]->sizecmd, keys->element[i]->str);
size_t lens[] = {strlen(types[i]->sizecmd), keys->element[i]->len};
else if (memkeys_samples==0)
redisAppendCommandArgv(context, 2, argv, lens);
redisAppendCommand(context, "%s %s %s",
} else if (memkeys_samples==0) {
"MEMORY", "USAGE", keys->element[i]->str);
const char* argv[] = {"MEMORY", "USAGE", keys->element[i]->str};
else
size_t lens[] = {6, 5, keys->element[i]->len};
redisAppendCommand(context, "%s %s %s SAMPLES %u",
redisAppendCommandArgv(context, 3, argv, lens);
"MEMORY", "USAGE", keys->element[i]->str, memkeys_samples);
} 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 */
/* Retrieve sizes */
...
@@ -7396,20 +7404,20 @@ static void findBigKeys(int memkeys, unsigned memkeys_samples) {
...
@@ -7396,20 +7404,20 @@ static void findBigKeys(int memkeys, unsigned memkeys_samples) {
sampled++;
sampled++;
if(type->biggest<sizes[i]) {
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 */
/* Keep track of biggest key name for this type */
if (type->biggest_key)
if (type->biggest_key)
sdsfree(type->biggest_key);
sdsfree(type->biggest_key);
type->biggest_key = sds
new(
keys->element[i]->str);
type->biggest_key = sds
catrepr(sdsempty(),
keys->element[i]->str
, keys->element[i]->len
);
if(!type->biggest_key) {
if(!type->biggest_key) {
fprintf(stderr, "Failed to allocate memory for key!\n");
fprintf(stderr, "Failed to allocate memory for key!\n");
exit(1);
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 */
/* Keep track of the biggest size for this type */
type->biggest = sizes[i];
type->biggest = sizes[i];
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment