2017-07-03 3 views
0

In Akamai können wir einen Inhalt vom Ursprung neu laden, wenn 90% der Verfallszeit verbraucht wurden. In diesem Fall liefert Akamai den zwischengespeicherten Inhalt, greift jedoch auf den Ursprung zu, um den neuen Inhalt neu zu laden.Redis - Inhalt vor Ablauf erneut laden

Gibt es eine ähnliche Funktion in Redis?

Zum Beispiel habe ich einen Inhalt im Cache für 5 Stunden. Aber ich möchte es neu laden, wenn jemand Zugriff auf diesen Inhalt hat, wenn nur 30 Minuten oder weniger übrig sind. Wenn ein Benutzer in diesem Zeitraum darauf zugreift, werde ich den zwischengespeicherten Inhalt bereitstellen, aber im Hintergrund werden wir den neuen Inhalt neu laden.

Ist es möglich?

Danke.

Antwort

2

Redis ist keine aktive Komponente zum Abrufen von Daten selbst, sondern eher ein Datenspeicher. Es speichert Ihre Daten, verfällt/entfernt Schlüssel basierend auf ihrer TTL.

Sie/Ihre Anwendung ist dafür verantwortlich, Redis mit den Daten zu füllen, die Sie gespeichert haben möchten.

Sie können jedoch Redis Primitive verwenden, um einen Teil zu erreichen, was Ihre Anforderung zu bedienen benötigt würde:

Schlüsselraum-Benachrichtigungen eine Benachrichtigung zu bestimmten Ereignissen wie Schlüsselerstellung oder -ablauf veröffentlichen. Sie könnten zwei Schlüssel in Redis speichern, einen Schlüssel, der Ihre Nutzlast mit der entsprechenden TTL und einem Phantomschlüssel darstellt, der ein Marker mit einer etwas kürzeren TTL ist (sagen wir 90% der ursprünglichen TTL).

Sobald der Phantomschlüssel abläuft, erfassen Sie diese Benachrichtigung. Dann können Sie den Inhalt des Cache abrufen, den Sie aktualisieren möchten. Sie aktualisieren den Cache-Schlüssel und schreiben einen Phantom-Schlüssel für die nächste Cache-Aktualisierungsiteration erneut.

Die oben genannten Schritte sind stark abgekürzt, aber sollten Sie zu einem realisierbaren Ansatz führen.