web-dev-qa-db-ja.com

Redis-毎日キーを期限切れにする方法

RedisのEXPIREATは、キーの有効期限を指定するために使用されることを知っています。しかし、私の問題は、UNIXの絶対タイムスタンプが必要なことです。キーを1日の終わりに失効させたい場合、引数として何を設定すべきかを考えるのに苦労しています。

これは私のキーを設定する方法です:

client.set(key、body);

したがって、有効期限を設定するには:

client.expireat(key、???);

何か案は?これをnodejsとsailsjsで使用していますありがとう!

17
bless1204

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));
_
31
laggingreflex

SETNX、SETEX、PSETEXは次のリリースで非推奨になるため、正しい方法は次のとおりです。

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

上記の詳細については、 here を参照してください。

17
loretoparisi

値と有効期限を一緒に設定できます。

  //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
  });
10
Praveena