Heim  >  Artikel  >  Datenbank  >  Redis-Löschrichtlinie und Räumungsrichtlinie

Redis-Löschrichtlinie und Räumungsrichtlinie

咔咔
咔咔Original
2020-08-28 17:19:321544Durchsuche

Wissenspunkte in diesem Artikel Abgelaufenes Datenkonzept Richtlinie zur Datenlöschung Räumungsalgorithmus

Vorwort

Kaka hat eine Roadmap zusammengestellt und einen Interviewleitfaden erstellt, um das Schreiben von Artikeln gemäß einer solchen Roadmap vorzubereiten, stellte jedoch später fest, dass es keinen Zusatz gab Wissenspunkte werden hinzugefügt. Ich freue mich auch darauf, dass Ihre Partner mithelfen, einige Informationen hinzuzufügen. Wir sehen uns im Kommentarbereich!

Redis-Löschrichtlinie und Räumungsrichtlinie
Hier Bildbeschreibung einfügen

Abgelaufene Daten

Schauen Sie sich zunächst die drei Schlüsselwerte an, nämlich Geschlecht, Name und Alter.

Die Anweisungen zum Festlegen dieser drei Werte lauten: break- all; color: rgba(59, 170, 0.1); padding: 0px 2px; line-height: 22px; >Setname Kaka Setex Alter 100 24 Setex Sex 10 1set name kaka setex age 100 24 setex sex 10 1

Redis-Löschrichtlinie und Räumungsrichtlinie在redis中我们可以使用ttl来获取某个key的状态,下面我们来使用ttl

Bildbeschreibung hier einfügenttl Erhalten Sie oben jeweils den Status von Name, Alter und Geschlecht

Sie können drei Werte sehen, die -1 775 -2 sind

Welche Informationen geben diese drei Werte also? 🎜
  • -1 stellt dauerhaft gültige Daten dar.
  • 775 Dieser Wert wird auf das Alter festgelegt. Der verwendete Befehl ist setex age 1000 24, der die verbleibende Gültigkeitsdauer darstellt.
  • -2 stellt abgelaufene oder gelöschte Daten dar. oder definierte DatenRedis-Löschrichtlinie und Räumungsrichtlinie

Die Speicherstruktur abgelaufener Daten

  • Wenn wir einen zeitkritischen Namen festlegen, speichert Redis eine Speicheradresse 0x10101
  • Dann öffnet Redis einen weiteren Bereich um den zeitkritischen Schlüssel zu speichern
  • Aber die Speichermethode ist die dem Schlüssel entsprechende Speicheradresse und die AblaufzeitRedis-Löschrichtlinie und RäumungsrichtlinieDie Redis-Löschstrategie, über die wir heute sprechen, besteht also darin, diesen Teil der Daten zu löschen.

Geplante Löschung

Die geplante Löschung besteht darin, einen Timer zu schreiben. Wenn die Schlüsselzeit abläuft, löscht die Timer-Aufgabe den abgelaufenen Schlüssel sofort.

Vorteile: Sie können sich die Ankunft des Schlüssels vorstellen Löschen so schnell wie möglich, was definitiv am speicherfreundlichsten ist und Speicher spart

Nachteile: Die Single-Threaded-Funktion von Redis besteht darin, dass alle Befehle in einer bestimmten Reihenfolge ausgeführt werden. Wenn der Schlüsselwert nach Ablauf gelöscht wird, wird die CPU stärker belastet, was sich direkt auf die Reaktionszeit und die E/A des Redis-Servers auswirkt. Geplantes Löschen bedeutet, dass Zeit im Austausch gegen Speicherplatz verwendet wird

Nachdem der geplante Löschvorgang abgeschlossen ist, werden die dem Schlüsselwert entsprechenden Daten gelöscht und der abgelaufene Speicherbereich wird ebenfalls direkt gelöscht. Redis-Löschrichtlinie und Räumungsrichtlinie

Verzögertes Löschen

Sehen Sie sich dieses Bild an. Wenn der Schlüsselwert abläuft, wird er nicht direkt gelöscht. Lesen Sie weiterRedis-Löschrichtlinie und Räumungsrichtlinie

Wenn wir das verzögerte Löschen verwenden, werden die Daten nach Ablauf nicht automatisch gelöscht. Die Löschmethode besteht darin, dass beim nächsten Abrufen des Schlüsselwerts eine Beurteilung vorgenommen wird, um festzustellen, ob der Schlüssel abgelaufen ist. Wenn es abläuft, löschen Sie es.

Das heißt, wenn get name erneut ausgeführt wird, wird eine Funktion ausgeführtexpirelfNeeded() Diese Funktion dient dazu, festzustellen, ob der Schlüssel abgelaufen ist. Abgelaufene geben Null zurück und löschen sie dann aus dem Speicher.

Redis-Löschrichtlinie und RäumungsrichtlinieVorteile: Dadurch wird ein gewisses Maß an CPU-Leistung verringert und es wird nur gelöscht, wenn es gelöscht werden muss.

Nachteile: Es muss an hoher Speicherauslastung liegen. Zum Beispiel einige heiße Nachrichten. Nachdem der Hotspot vorbei ist, wird fast niemand darauf zugreifen. Wenn niemand auf den Schlüssel zugreift, wird er für eine lange Zeit einen bestimmten Speicherplatz beanspruchen Methode besteht darin, Speicherplatz gegen Zeit einzutauschen.

Wir haben oben zwei Löschmethoden erwähnt, eine ist das geplante Löschen und die andere ist das verzögerte Löschen. Eine besteht darin, Raum gegen Zeit einzutauschen. Eine besteht darin, Zeit gegen Raum einzutauschen. Beide Optionen sind relativ extreme Methoden. Dann werfen wir einen Blick auf den Umsetzungsplan für die regelmäßige Löschung.

Redis-Löschrichtlinie und RäumungsrichtlinieImplementierungsmethode

Wenn Redis startet, liest es den Hz-Wert unter dem Server, der Standardwert ist 10. Dieser Wert kann direkt über das Terminal angezeigt werdeninfo server

Redis-Löschrichtlinie und RäumungsrichtlinieDann wird der Server Hz-mal pro Sekunde ausgeführt, um serverCron()-Abfragen durchzuführen

Verwenden Sie weiterhin DatenbankenCron, um nacheinander auf die Informationen der 16 Redis-Bibliotheken zuzugreifen

Beim Zugriff auf ActiveExpireCycel wird es erneut ausgeführt, um jeden Ablauf[*] einzeln zu erkennen. Die Ausführungszeit beträgt jeweils 250 ms/Server-Hz. Bei der Erkennung jedes Ablaufs[*] wird nach dem Zufallsprinzip ausgewählt Erkennung.

    Wenn der Schlüssel abläuft, löschen Sie den Schlüssel direkt Round25 %, Überprüfen Sie die nächsten Abläufe[
    ]
  • Jetzt kommt das Problem, unsere 250 ms/Hz-Zeit wurde ausgeführt, aber was sollen wir tun, wenn die 16 Datenbanken der Abläufe nicht durchlaufen wurden? ! In welche Bibliothek werde ich das nächste Mal radeln? Tatsächlich existiert dieser Wert, es ist der Wert von current_db. Dieser Wert wird in activeExpireCycel aufgezeichnet, wenn Sie das nächste Mal „expires[*]“ zur Ausführung eingeben
    Funktion 1: Es gibt keinen hohen Spitzenwert bei der CPU-Auslastung und die Erkennungshäufigkeit kann angepasst werden
  • Funktion 2: Der Speicherdruck wird nicht sehr hoch sein hoch, und der lange Zeit belegte Speicher wird fortgesetzt. Bereinigung
  • Eviction-Algorithmus

Redis-Löschrichtlinie und Räumungsrichtlinie

Oben haben wir drei Löschstrategien erwähnt, aber diese drei Strategien sind nur in Bezug auf Schlüssel mit einer Gültigkeitsdauer wirksam.

Da unser Redis nun nicht mehr genügend Speicher belegt, verwenden wir die Räumungsrichtlinie, um die normale Nutzung von Redis sicherzustellen.

redis ruft freeMemorylfNeeded() auf, um vor der Ausführung jedes Befehls zu prüfen, ob der Speicher ausreicht. Wenn dieser nicht ausreicht, werden einige Schlüssel gelöscht. Diese Datenlöschstrategie wird als Räumungsstrategie bezeichnet.

Der Parameter des maximal nutzbaren Speichers von Redis ist: maxmemory. Er bezieht sich auf den Anteil des belegten physischen Speichers.

Wählen Sie die Anzahl der zu löschenden Schlüssel jedes Mal: ​​maxmemory-samples

Löschstrategie: maxmemory-policy

「Konzentrieren wir uns auf die Löschstrategie」

  • Erkennen Sie flüchtige Daten (dh wir haben den Gültigkeitszeitraum festgelegt, aber die Daten sind noch nicht abgelaufen noch nicht abgelaufen ist[*] oben)
    • volatile-lru: Wählen Sie die Daten aus, die zuletzt verwendet wurden
    • volatile-lfu: Wählen Sie die Daten aus, die zuletzt verwendet wurden
    • volatile- ttl: Wählen Sie die Daten aus, die eliminiert werden sollen
      Der Schlüssel mit dem längsten Abstand von 9s ist das Alter
    Der am wenigsten verwendete Schlüssel ist der Geschlechtsschlüssel

    Wenn Sie volatile-lru folgen, wird das Alter gelöscht
  • Wenn Sie volatile-lfu folgen , Geschlecht wird gelöscht
  • Alle Daten erkennen

    • allkeys-lru: Wählen Sie die Daten aus, die zuletzt verwendet wurden
    • allkeys-lfu: Wählen Sie die Daten aus, die zuletzt verwendet wurden
    • allkeys-random : Nach dem Zufallsprinzip die gesamte Datenbank löschen
  • Datenräumung aufgeben

    • no-enviction: Die Daten werden erst gelöscht, wenn der Speicher aufgebraucht ist, was zu einem Oom-Fehler führt.

Zusammenfassung

Das Obige ist die Löschstrategie und Räumungsstrategie von Redis für Daten.

Hier ist zu beachten, dass sich flüchtige Daten in der Räumungsrichtlinie auf den Schlüssel mit festgelegter Ablaufzeit beziehen und kein dauerhafter Wert sind.

Die gesamte Datenbank bezieht sich auf alle Werte, mit Ablaufzeit und permanentem Datensatz.

Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, an denen Kaka seit seiner Karriere festhält. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können Sie in der nächsten Ausgabe.

Empfohlen: „Redis-Tutorial

Das obige ist der detaillierte Inhalt vonRedis-Löschrichtlinie und Räumungsrichtlinie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn