Redis -Cache -Räumung

Redis -Cache -Räumung

Im Allgemeinen ist ein Cache eine Software- oder Hardwarekomponente, die Daten von früheren Clientanfragen enthält. In den meisten Fällen sind die Backend -Systeme nicht so schnell, wie Sie möchten. Der Cache liegt zwischen Ihrer Backend -Datenbankschicht und der Client -Anwendung, die schnelle Datenabnahme und eine schnelle Reaktionszeit liefert.

Wenn die angeforderten Daten im Redis -Cache verfügbar sind, können die Daten direkt aus dem Redis -Cache bedient werden. Wenn andererseits die Daten im Redis -Cache nicht verfügbar sind, muss die Anforderung die ursprüngliche Backend -Datenbank erreichen, um die Daten wie gewohnt zu holen, was ein Cache -Fehlschlag ist, nachfolgende Anforderungen jedoch aus dem Cache dienen.

Mit dieser Art von Verhalten ist Redis Caching für viele Anwendungsfälle eine ausgezeichnete Wahl.

  • Schlussfolgerungen für maschinelles Lernen
  • Volltext-Suche
  • Komplexe relationale Datenbankabfragen
  • API-Ergebnisse von Drittanbietern

Redis -Caches bringen Ihre Bewerbung mit mehreren Vorteilen und stellen Sie eine große Herausforderung ein, die als Cache -Staless bezeichnet wird. Irgendwann ist Ihr Cache möglicherweise voll von veralteten Daten, die für heute nicht einmal gültig sind. Daher sollte es einen Mechanismus geben, um die alten oder ungültigen Daten zu vertreiben, während Sie Ihren Redis -Cache weiterhin mit neuen Daten verwenden.

Redis -Cache -Räumung

Als Redis-Cache erstmals eingeführt wurde. Dies war eine Menge manueller Arbeit für Entwickler, was der Redis -Server bearbeiten sollte.

Der ideale Ansatz sollte also darin bestehen, die alten Daten automatisch zu vertreiben, wenn das maximale Cache -Speichergrenze erreicht ist. Dies ist auch der Prozess, gefolgt vom Memcached -System. Redis verwendet das Special MaxMemory Richtlinie zur Benachrichtigung, dass die maximale Speichergrenze erreicht wurde.

MaxMemory -Konfigurationsrichtlinie

Redis verwendet die MaxMemory -Konfigurationsrichtlinie, um den maximal verfügbaren Speicher für den Cache zu identifizieren. Es gibt zwei Möglichkeiten, wie Sie den Wert der MaxMemory -Richtlinie festlegen können.

  • Mit dem Redis.Conf -Datei
  • Befehl config Set zur Laufzeit

Das Folgende ist ein Beispiel für einen Redis.Conf -Datei, die zeigt, wie Sie den maximalen Cache -Speicher für den Datensatz angeben können. In diesem Fall wurde die MaxMemory -Richtlinie auf 1000 Bytes festgelegt.

In ähnlicher Weise kann der Befehl Redis Config Set verwendet werden.

Konfigurationssatz MaxMemory 100

Wenn Sie den Wert der MaxMemory -Direktive auf 0 festlegen, bedeutet dies außerdem, dass für den Redis -Cache keine Speichergrenze angegeben wurde. In den meisten 64-Bit-Systemen wird dieser Wert auf 0 gesetzt. Das 32-Bit-System verwendet die maximale 3 GB maximale Speichergrenze implizit.

Wenn der Redis -Cache auf den von der MaxMemory -Richtlinie angegebenen Speicherwert trifft, wird die Entfernung von Schlüssel gemäß der ausgewählten Räumungsrichtlinie entfernen. Wenn kein Schlüssel die politischen Kriterien erfüllt, wird nichts vertrieben. Stattdessen antwortet der Redis-Server mit Fehlern auf Befehle wie LPush und fest.

Im folgenden Abschnitt werden wir die Redis -Räumlichkeitspolitik erörtern und wie sie bestimmen, welche Schlüssel vertrieben werden sollen oder nicht.

Räumlichkeitspolitik

Eine Räumungsrichtlinie bestimmt das Verhalten des Redis -Cache, wenn der MaxMemory -Wert erreicht ist. Redis entfernen alle Schlüssel, die die angegebenen Richtlinienkriterien zu einem bestimmten Zeitpunkt erfüllen. Daher ist es wichtig sicherzustellen, dass Sie eine Datenbank haben, um die gewünschten Schlüssel zu behalten. In den folgenden Abschnitten werden die verschiedenen zur Verwendung verfügbaren Rentik -Richtlinien für Redis -Räumlichkeiten beschrieben.

Noeviction

Für die Verwendung können mehrere Räumlichkeiten zur Verfügung stehen und sind Noeviction ist eines der am häufigsten verwendeten, wenn Sie keine alten Schlüssel entfernen möchten, wenn die maximale Speichergrenze erreicht ist. Es werden jedoch alle Redis -Schreibvorgänge Fehler veranstaltet, um den Benutzer darüber zu informieren, dass der Cache voll ist und einen Platz freigibt. Kurz gesagt, die Daten werden erst im Cache gespeichert, wenn Sie einige Speicherplatz manuell frei machen.

Flüchtige TTL

Im Flüchtige TTL Richtlinien, Redis nimmt Stichproben von Schlüssel, deren Auslauffelder auf wahr sind und diejenigen mit dem kleinsten TTL -Wert erteilen. Wenn es keine Schlüsseln mit dem Ablauffeld auf wahrem Feld gibt, tritt keine Räumung auf, was dem ähnlich ist Noeviction Politik.

Flüchtige Random

Dies ist eine weitere Version der volatilen-TTL. Auch hier berücksichtigt es nur die Schlüssel, die einen TTL -Wert haben, aber nicht den gesamten Schlüsselraum.

Allkeys-random

Dies ist ähnlicher wie der Flüchtige Random Politik, aber mit dem Allkeys-random Richtlinie, der gesamte Schlüsselraum wird berücksichtigt, nicht nur die Schlüssel mit einem TTL -Wert. In diesem Fall wird Redis Schlüssel zufällig erlassen, um neue Daten hinzuzufügen.

Beide oben genannten Richtlinien verwenden einen zufälligen Algorithmus, um Schlüssel aus dem Cache zu vertreiben, was ziemlich riskant ist und möglicherweise nicht die optimale Möglichkeit ist, die Schlüsselräumlichkeit zu erledigen. Redis führte also eine optimalere Möglichkeit ein, dies mit dem neuen zu tun LRU (am wenigsten kürzlich verwendet) Algorithmus.

Der LRU -Algorithmus (am wenigsten verwendet)

Der LRU -Algorithmus basiert auf der Annahme. Andererseits besteht die Wahrscheinlichkeit, dass der Schlüssel nicht bald oder jemals wieder verwendet wird. Mit dieser Annahme versucht der LRU -Algorithmus, die am wenigsten verwendeten Schlüssel aus dem Redis -Cache zu vertreiben, was ein optimalerer Ansatz ist als die Algorithmen der Zufallsschlüssel -Räumung.

Um diese Richtlinie zu implementieren, verwendet das Redis -Objekt eine neue LRU Feld mit zugewiesenen 24 Bit. Nachdem der LRU -Algorithmus vorhanden ist. Die Richtlinie der MaxMemory-Samples wird verwendet, um die Anzahl der Schlüssel pro Probe anzugeben. Dies kann mit dem Befehl config Set festgelegt werden, wie im Folgenden gezeigt.

Konfigurationssatz MaxMemory-Samples 5

Es ist wichtig zu beachten.

Es gibt zwei Aromen der LRU -Räumungspolitik.

Flüchtige LRU

Die am wenigsten kürzlich verwendeten Tasten mit dem Ablauffeld auf True werden entfernt. Die Schlüssel, die nicht mit einem TTL -Wert verbunden sind.

Allkeys-lru

Alle Schlüssel mit der höchsten Leerlaufzeit werden entfernt. In diesem Fall wird Redis die zuletzt verwendeten Schlüssel behalten.

Der LFU -Algorithmus (am wenigsten häufig verwendet)

Redis führte den neuen LFU -Algorithmus in Version 4 vor (am wenigsten häufig verwendet).0 Um selten verwendete Schlüssel zu identifizieren und sie aus dem Cache zu entfernen, wenn die maximale Speichergrenze erreicht ist. Mit der LFU -Richtlinie bleiben Schlüssel, auf die zu oft zugegriffen wird.

Volatile-Lfu

Die Tasten mit den auf True festgelegten Ablauffeldern und diejenigen, die am wenigsten unter der ausgewählten Probe verwendet werden.

Allkeys-Lfu

Es durchsucht den gesamten Schlüsselraum nach selten verwendeten Schlüssel und löscht sie, während die häufig verwendeten Schlüssel beibehalten.

Abschluss

Abschließend verwendet Redis die MaxMemory -Anweisung, um die maximale Speichergrenze des Redis -Cache anzugeben. Wie erläutert, wird die konfigurierte Räumungsrichtlinie, wenn der Cache seine maximale Speichergrenze erreicht. Redis verwendet die Näherungen der LRU- und LFU -Algorithmen, um die besten Kandidaten für die Räumung zu finden.