2015-06-01 10 views
8

So che EXPIREAT in Redis viene utilizzato per specificare quando una chiave scadrà. Il mio problema è che richiede un timestamp assoluto UNIX. Sto trovando difficile pensare a cosa dovrei impostare come argomento se voglio che la chiave scada alla fine della giornata.Redis - Come scadere della chiave ogni giorno

Ecco come ho impostato la mia chiave:

client.set (chiave, il corpo);

Quindi, per impostare la scadenza a:

client.expireat (chiave, ???);

Qualche idea? Sto usando questo con nodejs e sailsjs Grazie!

+0

quale modulo redis npm si sta utilizzando, è che tutti i moduli redis npm supportano la funzione expireat(). ? –

risposta

17

Se si vuole scadere che 24 ore più tardi

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

Oppure, se si vuole che scade esattamente alla fine di oggi, è possibile utilizzare .setHours su un oggetto new Date() per ottenere il tempo al termine della il giorno, e usa quello.

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

Grazie, funziona! :) – bless1204

+2

dove è documentato? –

+0

Non sono riuscito a trovarlo ovunque documentato? Come l'hai trovato? – Rouz

8

È possibile impostare il valore e la scadenza insieme.

//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

ma è meglio ignorare questo comando .. perché nel documento redis: "** _ Nota: poiché le opzioni del comando SET possono sostituire SETNX, SETEX, PSETEX, è possibile che nelle future versioni di Redis queste tre comandi saranno deprecati e finalmente rimossi ._ ** "[comando redis set] (https://redis.io/commands/set) –

4

Dal SETNX, SETEX, PSETEX stanno per essere deprecata nelle prossime versioni, il modo corretto è:

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

Vedi here per una discussione dettagliata di quanto sopra.

Problemi correlati