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

Redis-Löschrichtlinie und Räumungsrichtlinie

咔咔
咔咔Original
2020-05-28 18:29:591480Durchsuche

Wissenspunkte dieses Artikels

Konzept abgelaufener Daten

Datenlöschstrategie

Räumungsalgorithmus

Abgelaufene Daten


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


Die Anweisungen zum Einstellen dieser drei Werte sind set name kaka setex age 100 24 setex sex 10 1


Redis-Löschrichtlinie und Räumungsrichtlinie

In Redis können wir ttl verwenden, um den Status eines bestimmten Schlüssels abzurufen. Verwenden wir ttl, um den Status von Name, Alter und Geschlecht abzurufen


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


Welche Informationen geben diese drei Werte?


  • -1 stellt dauerhaft gültige Daten dar
  • 775 Dieser Wert wird auf das Alter festgelegt und der verwendete Befehl ist setex age 1000 24, ausgedrückt als Verbleibend Gültigkeitszeit
  • -2 zeigt abgelaufene Daten, gelöschte Daten oder Daten ohne Definition an
    Redis-Löschrichtlinie und Räumungsrichtlinie


Speicherstruktur abgelaufener Daten


  • Wenn wir einen zeitkritischen Namen festlegen, speichert Redis die Speicheradresse 0x10101
  • und dann öffnet Redis einen weiteren Speicherplatz zum Speichern des zeitkritischen Schlüssels
  • , aber die Speichermethode ist die dem Schlüssel entsprechende Speicheradresse und die Ablaufzeit
    Redis-Löschrichtlinie und Räumungsrichtlinie
    Dann handelt es sich bei der Redis-Löschstrategie, über die wir heute sprechen, um die gelöschten Daten.


Geplantes Löschen


Geplantes Löschen 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 vorstellen, dass der Schlüssel gelöscht wird, wenn er abläuft. Es ist definitiv am speicherfreundlichsten und spart Speicher


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


Nach Abschluss des geplanten Löschvorgangs 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


Probieren Sie es aus Dieses Bild wird nicht direkt gelöscht, wenn der Schlüsselwert abläuft. Wann wird es gelöscht? Lesen Sie weiter unten

Redis-Löschrichtlinie und Räumungsrichtlinie


Wenn wir das verzögerte Löschen verwenden, werden die Daten nach Ablauf nicht automatisch gelöscht. Daher lautet die Löschmethode: Wenn der Schlüsselwert das nächste Mal abgerufen wird, wird festgestellt, ob der Schlüssel abgelaufen ist. Wenn er abgelaufen ist, wird er gelöscht.


Das heißt, wenn get name erneut ausgeführt wird, wird eine Funktion ausgeführt expirelfNeeded() 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äumungsrichtlinie

Vorteile: Dadurch wird ein bestimmter Betrag reduziert der CPU-Leistung. Es wird nur gelöscht, wenn es notwendig ist,


zu löschen. Nachteile: Es muss sein, dass der Speicherdruck hoch ist, z Wenn der Hotspot vorbei ist, wird fast niemand darauf zugreifen. Dieser Schlüssel bleibt immer bestehen, wenn niemand darauf zugreift, und er wird für eine lange Zeit einen bestimmten Speicherplatz belegen


Mit anderen Worten, diese Methode besteht darin, Raum gegen Zeit zu tauschen


Regelmäßiges Löschen


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. Bei beiden Optionen handelt es sich um relativ extreme Ansätze. Dann werfen wir einen Blick auf den Umsetzungsplan für die regelmäßige Löschung.


Werfen wir zunächst einen Blick auf den Speicherplatz von Redis. Es gibt standardmäßig 16. In redis.conf gibt es eine Konfigurationsparameterdatenbank, die durch diesen Parameter gesteuert wird. Jede Datenbank verfügt über eine eigene Ablaufpartition, in der die Datenadresse und die Datenablaufzeit gespeichert sind.


Redis-Löschrichtlinie und Räumungsrichtlinie

Implementierungsmethode


Redis startet Wenn der Wert von Hz unter dem Server gelesen wird, ist der Standardwert 10. Dieser Wert kann mit info server bis


direkt im Terminal eingesehen werden

Redis-Löschrichtlinie und Räumungsrichtlinie

Dann wird der Server Hz-mal pro Sekunde für die serverCron()-Abfrage ausgeführt


Verwendung fortsetzen DatenbankenCron, um nacheinander auf die Informationen von 16 Redis-Bibliotheken zuzugreifen


Während des Zugriffs wird activeExpireCycel ausgeführt, um die einzelnen Abläufe[*] einzeln zu erkennen Die Ausführung beträgt Der Parameter 250 ms/Server-Hz


Beim Testen jedes Ablaufs[*] nacheinander wird ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC zufällig zum Testen ausgewählt


  • Wenn beim Schlüssel eine Zeitüberschreitung auftritt, löschen Sie den Schlüssel direkt
  • Anzahl der in einer Runde gelöschten Schlüssel>ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC*25 % setzen Sie den Vorgang fort
  • Wenn in einer Runde Die Anzahl der gelöschten Schlüssel<=ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC25 %, überprüfen Sie, ob die nächste abläuft[]


Jetzt kommt also das Problem, Unsere 250 ms/Hz wurden zu diesem Zeitpunkt ausgeführt, aber was soll ich tun, wenn die 16 Datenbanken mit Ablaufdatum noch 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 zeichnet „activeExpireCycel“ auf und führt ihn aus, wenn Sie das nächste Mal „expires[*]

“ eingeben

Redis-Löschrichtlinie und Räumungsrichtlinie

Funktion 1: Keine hohen Spitzen bei der CPU-Auslastung, benutzerdefinierte Einstellungen für die Erkennungshäufigkeit


Funktion 2 : Der Speicherdruck wird nicht sehr hoch sein und der über einen längeren Zeitraum belegte Speicher wird kontinuierlich bereinigt


Räumungsalgorithmus


Wir haben oben drei Löschstrategien erwähnt, aber diese drei Strategien sind nur relativ zum Schlüssel mit festgelegter Gültigkeitsdauer wirksam.


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


Redis ruft freeMemorylfNeeded() auf, um zu prüfen, ob der Speicher ausreicht, bevor jeder Befehl ausgeführt wird. Wenn dieser nicht ausreicht, werden einige Schlüssel gelöscht wird Räumungsrichtlinie genannt.


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


Wählen Sie die Anzahl der Schlüssel aus, die jedes Mal gelöscht werden sollen: maxmemory-samples


Löschrichtlinie: maxmemory-policy


Konzentrieren wir uns auf die Löschstrategie


  • Erkennung flüchtiger Daten (das heißt, wir haben den Gültigkeitszeitraum festgelegt, aber er hat noch nicht abgelaufen Die Daten sind abgelaufen[*]) oben Minimale Daten
volatile-ttl: Wählen Sie die zu löschenden Daten aus
      volatile-random: Zufällig auswählen
    • Sehen Sie sich als nächstes ein Bild an

  • 9s ist die aktuelle Zeit
  • Der längste Schlüssel zu 9s ist das Alter
  • Der am wenigsten verwendete Schlüssel ist das Geschlecht
  • Wenn laut volatile- lru gelöscht wird Alter
  • Wenn du volatile-lfu folgst, wird das Geschlecht gelöscht
    Redis-Löschrichtlinie und Räumungsrichtlinie
  • Alle Daten erkennen
    • allkeys-lru: Wählen Sie die Daten aus, die in letzter Zeit am wenigsten verwendet wurden
    • allkeys-lfu: Wählen Sie die Daten aus, die in letzter Zeit am wenigsten verwendet wurden
    • allkeys-random: Verwenden Sie die Daten nach dem Zufallsprinzip gesamte Datenbank löschen
  • Datenräumung aufgeben
    • keine Enviction: Die Daten werden erst im Speicher gelöscht ist aufgebraucht, was einen oom-Fehler verursacht.


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.

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