redis expire不会在服务器中过期

我正在尝试自动将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') 

在你的情况下,你将错误的值传递给expireat函数的参数。 对于这个function,你必须在这里检查。 在这个函数中你必须通过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"); } }); 

希望这会有所帮助。

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

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