mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 17:10:50 +00:00
Merge pull request #4472 from itamarhaber/object_patch
A minor fix and `help` subcommand for `OBJECT`
This commit is contained in:
commit
29252391c4
25
src/object.c
25
src/object.c
@ -1012,11 +1012,25 @@ robj *objectCommandLookupOrReply(client *c, robj *key, robj *reply) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Object command allows to inspect the internals of an Redis Object.
|
/* Object command allows to inspect the internals of an Redis Object.
|
||||||
* Usage: OBJECT <refcount|encoding|idletime> <key> */
|
* Usage: OBJECT <refcount|encoding|idletime|freq> <key> */
|
||||||
void objectCommand(client *c) {
|
void objectCommand(client *c) {
|
||||||
robj *o;
|
robj *o;
|
||||||
|
|
||||||
if (!strcasecmp(c->argv[1]->ptr,"refcount") && c->argc == 3) {
|
if (!strcasecmp(c->argv[1]->ptr,"help") && c->argc == 2) {
|
||||||
|
void *blenp = addDeferredMultiBulkLength(c);
|
||||||
|
int blen = 0;
|
||||||
|
blen++; addReplyStatus(c,
|
||||||
|
"OBJECT <subcommand> key. Subcommands:");
|
||||||
|
blen++; addReplyStatus(c,
|
||||||
|
"refcount -- Return the number of references of the value associated with the specified key.");
|
||||||
|
blen++; addReplyStatus(c,
|
||||||
|
"encoding -- Return the kind of internal representation used in order to store the value associated with a key.");
|
||||||
|
blen++; addReplyStatus(c,
|
||||||
|
"idletime -- Return the number of seconds since the object stored at the specified key is idle.");
|
||||||
|
blen++; addReplyStatus(c,
|
||||||
|
"freq -- Return the inverse logarithmic access frequency counter of the object stored at the specified key.");
|
||||||
|
setDeferredMultiBulkLength(c,blenp,blen);
|
||||||
|
} else if (!strcasecmp(c->argv[1]->ptr,"refcount") && c->argc == 3) {
|
||||||
if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk))
|
if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk))
|
||||||
== NULL) return;
|
== NULL) return;
|
||||||
addReplyLongLong(c,o->refcount);
|
addReplyLongLong(c,o->refcount);
|
||||||
@ -1035,13 +1049,14 @@ void objectCommand(client *c) {
|
|||||||
} else if (!strcasecmp(c->argv[1]->ptr,"freq") && c->argc == 3) {
|
} else if (!strcasecmp(c->argv[1]->ptr,"freq") && c->argc == 3) {
|
||||||
if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk))
|
if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk))
|
||||||
== NULL) return;
|
== NULL) return;
|
||||||
if (server.maxmemory_policy & MAXMEMORY_FLAG_LRU) {
|
if (!(server.maxmemory_policy & MAXMEMORY_FLAG_LFU)) {
|
||||||
addReplyError(c,"An LRU maxmemory policy is selected, access frequency not tracked. Please note that when switching between policies at runtime LRU and LFU data will take some time to adjust.");
|
addReplyError(c,"A non-LFU maxmemory policy is selected, access frequency not tracked. Please note that when switching between policies at runtime LRU and LFU data will take some time to adjust.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
addReplyLongLong(c,o->lru&255);
|
addReplyLongLong(c,o->lru&255);
|
||||||
} else {
|
} else {
|
||||||
addReplyError(c,"Syntax error. Try OBJECT (refcount|encoding|idletime|freq)");
|
addReplyErrorFormat(c, "Unknown subcommand or wrong number of arguments for '%s'. Try OBJECT help",
|
||||||
|
(char *)c->argv[1]->ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user