]> git.saurik.com Git - redis.git/commitdiff
for (p)expireat use absolute time, without double recomputation
authorPremysl Hruby <dfenze@gmail.com>
Wed, 28 Mar 2012 09:48:36 +0000 (11:48 +0200)
committerantirez <antirez@gmail.com>
Thu, 5 Apr 2012 13:46:21 +0000 (15:46 +0200)
src/db.c

index 24cd1f5e46e55924ab3487f67febb04062bf09a3..199fdba496a004f6a3bd6736cd6089ee6a7d7e85 100644 (file)
--- a/src/db.c
+++ b/src/db.c
@@ -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);
+    expireGenericCommand(c,mstime(),UNIT_SECONDS);
 }
 
 void expireatCommand(redisClient *c) {
-    expireGenericCommand(c,mstime(),UNIT_SECONDS);
+    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) {