我试图在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')
答案 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");
}
});
希望它会有所帮助。