Je sais que EXPIREAT dans Redis est utilisé pour spécifier quand une clé expirera. Mon problème est cependant qu'il faut un horodatage UNIX absolu. J'ai du mal à penser à ce que je devrais définir comme argument si je veux que la clé expire à la fin de la journée.
Voici comment j'ai défini ma clé:
client.set (clé, corps);
Donc, pour définir l'expiration à:
client.expireat (clé, ???);
Des idées? J'utilise ceci avec nodejs et sailsjs Merci!
Si vous souhaitez l'expirer 24 heures plus tard
client.expireat(key, parseInt((+new Date)/1000) + 86400);
Ou si vous voulez qu'il expire exactement à la fin de la journée, vous pouvez utiliser .setHours
sur un objet new Date()
pour obtenir l'heure à la fin de la journée et utilisez-le.
var todayEnd = new Date().setHours(23, 59, 59, 999);
client.expireat(key, parseInt(todayEnd/1000));
Puisque SETNX, SETEX, PSETEX vont être dépréciés dans les prochaines versions, la bonne façon est:
client.set(key, value, 'EX', 60 * 60 * 24, callback);
Voir ici pour une discussion détaillée sur ce qui précède.
Vous pouvez définir la valeur et l'expiration ensemble.
//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
});