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) {
/* 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
=
sds
new
(
keys
->
element
[
i
]
->
str
);
type
->
biggest_key
=
sds
catrepr
(
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
];
}
...
...
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