2016-12-07 2 views
1
127.0.0.1:6379> keys * 

1) "trending_showrooms" 
2) "trending_hashtags" 
3) "trending_mints" 

127.0.0.1:6379> sort trending_mints by *->id DESC LIMIT 0 12 

1) "mint_14216" 
2) "mint_14159" 
3) "mint_14158" 
4) "mint_14153" 
5) "mint_14151" 
6) "mint_14146" 

Die Schlüssel sind abgelaufen, aber die Schlüssel sind innen festgelegt. Ich muss die Verfallsschlüssel automatisch in redis entfernenWie wird ein abgelaufener Schlüssel automatisch aus einem Set entfernt?

+0

"Wie automatisch einen abgelaufenen Schlüssel aus einem Satz entfernen?" - Wollen Sie zur Verdeutlichung ein einzelnes Mitglied innerhalb eines Satzes verfallen lassen oder den gesetzten Schlüssel und alles darin verfallen lassen? – davissp14

+0

Ja, ich möchte ein einzelnes Mitglied innerhalb eines Satzes ablaufen –

Antwort

0

Bitte diese Seite vollständig bereit: https://redis.io/topics/notifications

zusammenfassend, können Sie ein Sentinel-Programm hören PUB/SUB Nachrichten haben müssen, und Sie müssen die redis.conf Datei ändern zu aktivieren, um Benachrichtigungen KeyEvent verfallen:

in redis.conf :

notify-keyspace-events Ex 

um EnAb le die Funktion eine nicht-leere Zeichenfolge verwendet wird, zusammengesetzt aus mehreren Zeichen, wobei jedes Zeichen eine spezielle Bedeutung entsprechend der folgenden Tabelle hat

E  Keyevent events, published with [email protected]<db>__ prefix. 
x  Expired events (events generated every time a key expires) 

der Sentinel Programm schreitet dann zu dem Kanal hören müssen [email protected]__:del, wenn Ihre Datenbank 0 ist. Ändern Sie die Datenbanknummer, wenn Sie eine andere als Null verwenden.

Wenn Sie den Kanal abonnieren und die key empfangen, die abläuft, geben Sie einfach eine SREM trending_mints key aus, um sie aus dem Set zu entfernen.

WICHTIG

Die abgelaufenen Ereignisse generiert werden, wenn ein Schlüssel zugegriffen wird und gefunden wird durch eine der oben genannten Systeme abgelaufen ist, als Folge gibt es keine garantiert, dass der Redis-Server in der Lage sein, das abgelaufene Ereignis zu dem Zeitpunkt zu erzeugen, zu dem die Schlüssel-Lebenszeit den Wert Null erreicht.

Wenn kein Befehl Ziele der Schlüssel ständig, und es gibt viele Tasten mit ein TTL zugeordnet ist, kann es der Schlüssel Zeit zu leben auf Null fällt, und die Zeit, die abgelaufene Ereignis ist eine erhebliche Verzögerung zwischen dem Zeitpunkt erzeugt.

Grundsätzlich abgelaufene Ereignisse werden generiert, wenn der Redis-Server den Schlüssel löscht und nicht wenn die Lebenszeit theoretisch den Wert von Null erreicht.

So Tasten werden aufgrund Ablauf gelöscht werden, aber die Meldung ist nicht im Moment TTL Null erreicht auftreten garantiert.

ALSO, wenn Ihr Sentinel-Programm die Nachricht PUB/SUB verfehlt, also ... das ist es, Sie werden nicht ein anderes Mal benachrichtigt werden! (Dies ist auch auf den obigen Link)

+0

"Die Schlüssel sind abgelaufen, aber die Schlüssel sind innen festgelegt" - ich glaube, er bezieht sich auf die Mitglieder innerhalb eines Satzes, nicht die Schlüssel selbst. – davissp14

+0

Hallo @ davissp14, ich denke, er hat eine doppelte Struktur, einen einfachen Schlüssel für jedes Set-Mitglied, und diese einfachen Schlüssel sind ablaufen (zumindest könnte er es so machen). – Niloct

Verwandte Themen