for (p)expireat use absolute time, without double recomputation

This commit is contained in:
Premysl Hruby 2012-03-28 11:48:36 +02:00 committed by antirez
parent d48d1309c6
commit c6bf4a0034

View File

@ -527,7 +527,7 @@ void expireGenericCommand(redisClient *c, long long offset, int unit) {
return;
if (unit == UNIT_SECONDS) milliseconds *= 1000;
milliseconds -= offset;
milliseconds += offset;
de = dictFind(c->db->dict,key->ptr);
if (de == NULL) {
@ -554,8 +554,7 @@ void expireGenericCommand(redisClient *c, long long offset, int unit) {
addReply(c, shared.cone);
return;
} else {
long long when = mstime()+milliseconds;
setExpire(c->db,key,when);
setExpire(c->db,key,milliseconds);
addReply(c,shared.cone);
signalModifiedKey(c->db,key);
server.dirty++;
@ -564,19 +563,19 @@ void expireGenericCommand(redisClient *c, long long offset, int unit) {
}
void expireCommand(redisClient *c) {
expireGenericCommand(c,0,UNIT_SECONDS);
}
void expireatCommand(redisClient *c) {
expireGenericCommand(c,mstime(),UNIT_SECONDS);
}
void expireatCommand(redisClient *c) {
expireGenericCommand(c,0,UNIT_SECONDS);
}
void pexpireCommand(redisClient *c) {
expireGenericCommand(c,0,UNIT_MILLISECONDS);
expireGenericCommand(c,mstime(),UNIT_MILLISECONDS);
}
void pexpireatCommand(redisClient *c) {
expireGenericCommand(c,mstime(),UNIT_MILLISECONDS);
expireGenericCommand(c,0,UNIT_MILLISECONDS);
}
void ttlGenericCommand(redisClient *c, int output_ms) {