2017-06-30 1 views
1

ich auto versuche den Schlüssel in redis verfallenredis expireAt nicht in Server abgelaufen immer

when=10 
unit='seconds' 
redisClient.expireat(key,moment().add(when,unit)); 

Auf redis cli Keys * Ich sehe den Schlüssel I gesetzt haben

> TTL 472962f1-10ad8-4c4d-bc5e-2e38b632f36 
(integer) -1 
> Exists 472962f1-10ad8-4c4d-bc5e-2e38b632f36 
(integer) 1 

und nach 10 Sekunden wird es nicht gelöscht!

Ich benutze Moment, um die Zeit zu bekommen, da ich die Informationen als Antwort teilen muss, dass dieser Schlüssel danach nicht funktioniert.

+0

das ist gelöst! – user269867

Antwort

1

In Ihrem Fall übergeben Sie falschen Wert in den Parameter expireat Funktion. Für diese Funktion müssen Sie here überprüfen. In dieser Funktion musst du unixtime bestehen. Also für Ihr Szenario können Sie etwas tun:

var when=10; 
var unit="seconds"; 
redisClient.expireat(key, +new Date(moment().add(when,unit)), function (err, didSetExpiry){ 
    if(err){ 
     console.log("Error occured: " + err); 
    } else { 
     console.log("Redis Key Operation is successful"); 
    } 
}); 

Hoffnung, dass es helfen wird.

0

Ttl gibt -1 zurück, wenn der Schlüssel vorhanden ist, aber kein zugeordnetes Verfallen hat.

Ich bin nicht famaliary mit dem Node-Client, aber ich bin mir ziemlich sicher, dass die Ablaufzeit nicht erfolgreich eingestellt wurde.

+0

ich benutze ablauf (no sec) nicht ablaufAt (timestamp) .... nicht sicher, ob timestamp korrekt eingegeben wird, weil wenn ich zeitstempel gebe addiere 10 sec (also 03-07-2017 12:56:10) und mache TTL-Taste zeigt immer Timestamp als Integer, die immer kleiner wird um Sekunden ... was keinen Sinn macht. Ich dachte, es wird ablaufen. Zum festgelegten Zeitstempel..03-07-2017 12:56:10 – user269867

Verwandte Themen