2015-06-01 3 views
8

Я знаю, что EXPIREAT в Redis используется, чтобы указать, когда истечет срок действия ключа. Моя проблема заключается в том, что для нее требуется абсолютная отметка времени UNIX. Я с трудом думаю о том, что я должен указать в качестве аргумента, если я хочу, чтобы ключ истекал в конце дня.Redis - Как истечь ключ ежедневно

Это, как я установил свой ключ:

client.set (ключ, корпус);

Так, чтобы установить истекает:

client.expireat (ключ, ???);

Любые идеи? Я использую это с nodejs и sailsjs Спасибо!

+0

, который использует модуль redis npm, заключается в том, что модуль redis npm поддерживает функцию expireat(). ? –

ответ

17

Если вы хотите истекают его через 24 часа

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

Или, если вы хотите, чтобы он истекает именно в конце сегодняшнего дня, вы можете использовать .setHours на new Date() объекта, чтобы получить время в конце день, и использовать это.

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

Спасибо, это работает! :) – bless1204

+2

где это задокументировано? –

+0

Мне не удалось найти это где-нибудь задокументированным? Как вы это нашли? – Rouz

8

Вы можете установить значение и срок его действия.

//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 
    }); 
+0

его работа, но лучше проигнорировать эту команду .. потому что в документе redis: «** _ Примечание: Поскольку параметры команды SET могут заменить SETNX, SETEX, PSETEX, возможно, что в будущих версиях Redis эти три команды будут устаревать и, наконец, удалены ._ ** "[redis set command] (https://redis.io/commands/set) –

4

С SETNX, SETEX, PSETEX будут устаревшими в следующих выпусках, правильный путь:

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

См here для детального обсуждения выше.

Смежные вопросы