Add millisecond support for EXPIREMEMBER command
Former-commit-id: 6e6cd84ad7dc9e5763ab36668cbbf8ca6743f8d9
This commit is contained in:
parent
e57d2e24c9
commit
650085d61a
@ -130,13 +130,43 @@ void activeExpireCycleExpire(redisDb *db, expireEntry &e, long long now) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int parseUnitString(const char *sz)
|
||||||
|
{
|
||||||
|
if (strcasecmp(sz, "s") == 0)
|
||||||
|
return UNIT_SECONDS;
|
||||||
|
if (strcasecmp(sz, "ms") == 0)
|
||||||
|
return UNIT_MILLISECONDS;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
void expireMemberCommand(client *c)
|
void expireMemberCommand(client *c)
|
||||||
{
|
{
|
||||||
long long when;
|
long long when;
|
||||||
if (getLongLongFromObjectOrReply(c, c->argv[3], &when, NULL) != C_OK)
|
if (getLongLongFromObjectOrReply(c, c->argv[3], &when, NULL) != C_OK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
when *= 1000;
|
if (c->argc > 5) {
|
||||||
|
addReplyError(c, "Invalid number of arguments");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int unit = UNIT_SECONDS;
|
||||||
|
if (c->argc == 5) {
|
||||||
|
unit = parseUnitString(szFromObj(c->argv[4]));
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (unit)
|
||||||
|
{
|
||||||
|
case UNIT_SECONDS:
|
||||||
|
when *= 1000;
|
||||||
|
case UNIT_MILLISECONDS:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
addReplyError(c, "Invalid unit arg");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
when += mstime();
|
when += mstime();
|
||||||
|
|
||||||
/* No key, return zero. */
|
/* No key, return zero. */
|
||||||
|
@ -344,8 +344,8 @@ struct commandHelp {
|
|||||||
0,
|
0,
|
||||||
"1.2.0" },
|
"1.2.0" },
|
||||||
{ "EXPIREMEMBER",
|
{ "EXPIREMEMBER",
|
||||||
"key subkey seconds",
|
"key subkey delay [Unit: s,ms]",
|
||||||
"set a subkey's time to live in seconds"},
|
"set a subkey's time to live in seconds (or milliseconds)"},
|
||||||
{ "FLUSHALL",
|
{ "FLUSHALL",
|
||||||
"[ASYNC]",
|
"[ASYNC]",
|
||||||
"Remove all keys from all databases",
|
"Remove all keys from all databases",
|
||||||
|
@ -623,7 +623,7 @@ struct redisCommand redisCommandTable[] = {
|
|||||||
"write fast @keyspace",
|
"write fast @keyspace",
|
||||||
0,NULL,1,1,1,0,0,0},
|
0,NULL,1,1,1,0,0,0},
|
||||||
|
|
||||||
{"expiremember", expireMemberCommand, 4,
|
{"expiremember", expireMemberCommand, -4,
|
||||||
"write fast @keyspace",
|
"write fast @keyspace",
|
||||||
0,NULL,1,1,1,0,0,0},
|
0,NULL,1,1,1,0,0,0},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user