Redis -如何每天过期密钥

1dkrff03  于 2023-04-10  发布在  Redis
关注(0)|答案(4)|浏览(169)

我知道Redis中的EXPIREAT是用来指定密钥何时过期的。但我的问题是它需要一个绝对的UNIX时间戳。我发现很难思考如果我想让密钥在一天结束时过期,我应该设置什么参数。
这是我设置密钥的方式:
return(key,body);
因此,要设置expire at:
public void run();
有什么想法吗?我正在使用nodejs和sailsjs谢谢!

lnlaulya

lnlaulya1#

如果你想在24小时后过期

client.expireat(key, parseInt((+new Date)/1000) + 86400);

或者,如果你想让它在今天结束时到期,你可以在new Date()对象上使用.setHours来获取一天结束时的时间,并使用它。

var todayEnd = new Date().setHours(23, 59, 59, 999);
client.expireat(key, parseInt(todayEnd/1000));
cbeh67ev

cbeh67ev2#

由于SETNX、SETEX、PSETEX将在下一个版本中弃用,因此正确的方法是:

client.set(key, value, 'EX', 60 * 60 * 24, callback);

有关上述内容的详细讨论,请参见here

6tr1vspr

6tr1vspr3#

您可以同时设置value和expiry。

//here key will expire after 24 hours
  client.setex(key, 24*60*60, value, function(err, result) {
    //check for success/failure here
  });

 //here key will expire at end of the day
  client.setex(key, parseInt((new Date().setHours(23, 59, 59, 999)-new Date())/1000), value, function(err, result) {
    //check for success/failure here
  });
1cklez4t

1cklez4t4#

对于新版本,你可以使用设置和过期一样

await client.set(key , value, {EX: 60*60*24})

相关问题