redis expire在服务器中没有过期

时间:2017-06-30 21:25:05

标签: node.js redis

我试图在redis中自动过期密钥

when=10
unit='seconds'
redisClient.expireat(key,moment().add(when,unit));

关于redis cli 钥匙* 我可以看到我设置的密钥

> TTL 472962f1-10ad8-4c4d-bc5e-2e38b632f36
(integer) -1
> Exists 472962f1-10ad8-4c4d-bc5e-2e38b632f36
(integer) 1

10秒后它不会被删除!

我正在利用时间来获取时间,因为我必须分享信息,以便在此之后此密钥无效。

var whenKeyExpire = moment().add(when,unit).format('MM-DD-YYYY hh:mm:ss A')

2 个答案:

答案 0 :(得分:1)

如果密钥存在但是没有关联的到期,则Ttl返回-1。

我不喜欢节点客户端,但我很确定过期时间没有成功设置。

答案 1 :(得分:1)

在您的情况下,您将错误的值传递给expireat函数的参数。对于此功能,您必须检查here。在此功能中,您必须通过unixtime。 因此,对于您的场景,您可以执行以下操作:

var when=10;
var unit="seconds";
redisClient.expireat(key, +new Date(moment().add(when,unit)), function (err, didSetExpiry){
   if(err){
      console.log("Error occured: " + err);
   } else {
      console.log("Redis Key Operation is successful");
   }
});

希望它会有所帮助。