Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz
Dieser Artikel stellt Ihnen die Snapshot-Methode (RDB) in der Redis-Persistenz vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Redis liest und schreibt im Speicher, daher ist die Leistung hoch, aber die Daten im Speicher gehen beim Neustart des Servers verloren, um sicherzustellen, dass die Daten nicht verloren gehen. Wir müssen die Daten im Speicher auf der Festplatte speichern, damit die Originaldaten beim Neustart von Redis von der Festplatte wiederhergestellt werden können. Der gesamte Vorgang wird als Redis-Persistenz bezeichnet.
Redis-Persistenz ist auch einer der Hauptunterschiede zwischen Redis und Memcached, da Memcached keine Persistenzfunktion hat.
1. Mehrere Persistenzmethoden
Redis-Persistenz verfügt über die folgenden drei Methoden:
- Snapshot-Methode (RDB, Redis DataBase) schreibt die Speicherdaten zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte übertragen;
- Dateianhängemethode (AOF, Append Only File) zeichnet alle Betriebsbefehle auf und schreibt sie als Text. An die Datei anhängen Formular;
- Hybrid-Persistenzmethode, eine neue Methode nach Redis 4.0. Beim Schreiben werden zunächst die aktuellen Daten an den Anfang geschrieben in Form von RDB und speichern Sie dann die nachfolgenden Betriebsbefehle in der Datei im AOF-Format. Dies kann nicht nur die Geschwindigkeit des Redis-Neustarts sicherstellen, sondern auch das Risiko eines Datenverlusts verringern.
Da jede Persistenzlösung spezifische Nutzungsszenarien hat, beginnen wir mit der RDB-Persistenz.
2. Einführung in RDB
RDB (Redis DataBase) ist der Prozess des Schreibens eines Speicher-Snapshots (Snapshot) zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte.
3. Persistenzauslösung
Es gibt zwei Arten von Persistenzauslösungsmethoden für RDB: eine ist die manuelle Auslösung und die andere ist die automatische Auslösung.
1) Manuelles Auslösen
Es gibt zwei Vorgänge zum manuellen Auslösen der Persistenz: save
und bgsave
Ihr Hauptunterschied besteht darin, ob die Ausführung des Redis-Hauptthreads blockiert werden soll .
① Befehl speichern
Das Ausführen des Befehls save
im Client löst die Persistenz von Redis aus, versetzt Redis jedoch auch in einen blockierenden Zustand, bis die RDB-Persistenz abgeschlossen ist Befehle, die von anderen Clients gesendet werden, daher muss in einer Produktionsumgebung mit Vorsicht verwendet werden. Der Befehl
save
wird wie folgt verwendet:
Wie aus dem Bild ersichtlich ist, wird nach Ausführung des Befehls save
die Persistenz erhöht Datei dump.rdb
Die Änderungszeit ändert sich, was bedeutet, dass save
die RDB-Persistenz erfolgreich ausgelöst hat.
save
Der Befehlsausführungsprozess ist wie in der folgenden Abbildung dargestellt:
② bgsave-Befehl
bgsave (Hintergrundspeicherung) ist ein Hintergrundspeichermittel. Der größte Unterschied zwischen ihm und dem Befehl save
besteht darin, dass bgsave
einen untergeordneten Prozess forkt (), um eine Persistenz durchzuführen. Im gesamten Prozess gibt es nur eine kurze Blockierung, wenn fork () den untergeordneten Prozess durchführt Nachdem der untergeordnete Prozess erstellt wurde, kann der Hauptprozess von Redis auf Anfragen anderer Clients reagieren. Im Vergleich zum Befehl save
, der den gesamten Prozess blockiert, ist der Befehl bgsave
für uns offensichtlich besser geeignet. Der Befehl bgsave
wird wie in der Abbildung unten gezeigt verwendet:
bgsave
Der Ausführungsprozess ist wie in der Abbildung unten dargestellt:
2) Automatische Auslösung
Nachdem wir über die manuelle Auslösemethode von RDB gesprochen haben, schauen wir uns an, wie man die RDB-Persistenz automatisch auslöst.
Die automatische RDB-Persistenz tritt hauptsächlich in den folgenden Situationen auf.
① m n speichern
save m n
bedeutet, dass die Persistenz automatisch ausgelöst wird, wenn sich n Tasten innerhalb von m Sekunden ändern.
Die Parameter m und n finden Sie in der Redis-Konfigurationsdatei. save 60 1
gibt beispielsweise an, dass die RDB-Persistenz ausgelöst wird, wenn sich mindestens ein Schlüssel innerhalb von 60 Sekunden ändert.
Löst automatisch die Persistenz aus. Das Wesentliche ist, dass Redis den Befehl bgsave
automatisch einmal ausführt, wenn die festgelegten Triggerbedingungen erfüllt sind.
Hinweis: Beim Festlegen mehrerer save m n-Befehle wird die Persistenz ausgelöst, wenn eine Bedingung erfüllt ist.
Zum Beispiel richten wir die folgenden zwei save m n-Befehle ein:
- 60 10 sparen
- 600 1 sparen
Wenn sich der Redis-Schlüsselwert innerhalb von 60 Sekunden 10 Mal ändert, wird die Persistenz ausgelöst; wenn sich der Redis-Schlüsselwert innerhalb von 60 Sekunden ändert Wenn sich der Schlüsselwert weniger als zehnmal geändert hat, ermittelt Redis, ob der Schlüsselwert von Redis innerhalb von 600 Sekunden mindestens einmal geändert wurde. Wenn ja, wird die Persistenz ausgelöst. Der Befehl
②lushall
flushall
wird zum Löschen der Redis-Datenbank verwendet. Er muss in einer Produktionsumgebung mit Vorsicht verwendet werden. Wenn Redis den Befehl flushall
ausführt, erfolgt die automatische Persistenz RDB-Dateien werden gelöscht.
Das Ausführungsergebnis ist in der folgenden Abbildung dargestellt:
③ Master-Slave-Synchronisierung wird ausgelöst
Bei der Redis-Master-Slave-Replikation, wenn der Slave Der Knoten führt einen vollständigen Replikationsvorgang aus. Der Master-Knoten führt den Befehl bgsave
aus und sendet die RDB-Datei an den Slave-Knoten. Dieser Vorgang löst automatisch die Redis-Persistenz aus.
4. Konfigurationsanweisungen
Die richtige Einstellung der RDB-Konfiguration kann den effizienten und stabilen Betrieb von Redis sicherstellen.
RDB-Konfigurationsparameter finden Sie in der Redis-Konfigurationsdatei. Die spezifischen Inhalte lauten wie folgt:
# RDB 保存的条件 save 900 1 save 300 10 save 60 10000 # bgsave 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。 stop-writes-on-bgsave-error yes # RDB 文件压缩 rdbcompression yes # 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。 rdbchecksum yes # RDB 文件名 dbfilename dump.rdb # RDB 文件目录 dir ./
Die wichtigeren Parameter sind wie folgt folgt:
① Speicherparameter
Wird zum Konfigurieren von Parametern verwendet, die RDB-Persistenzbedingungen auslösen. Wenn die Speicherbedingungen erfüllt sind, werden die Daten auf der Festplatte gespeichert.
Die Standardkonfigurationsbeschreibung lautet wie folgt:
- save 900 1: Gibt an, dass die Daten auf der Festplatte gespeichert werden, wenn sich mindestens 1 Schlüsselwert innerhalb von 900 Sekunden ändert; save 300 10: Gibt an, dass die Daten auf der Festplatte gespeichert werden, wenn sich mindestens 10 Schlüsselwerte innerhalb von 300 Sekunden ändern;
- save 60 10000: Gibt an, dass mindestens 10.000 Schlüsselwerte vorhanden sind Änderung innerhalb von 60 Sekunden, werden die Daten auf der Festplatte gespeichert.
② rdbcompression-Parameter Der Standardwert ist
, was bedeutet, dass Redis beim Einschalten der RDB-Dateikomprimierung den LZF-Algorithmus zur Komprimierung verwendet. Wenn Sie keine CPU-Leistung für die Dateikomprimierung verbrauchen möchten, können Sie diese Funktion deaktivieren. Der Nachteil besteht darin, dass zum Speichern von Dateien mehr Speicherplatz benötigt wird. yes
③ rdbchecksum-Parameter Der Standardwert ist
, der angibt, ob die RDB-Dateiprüfung beim Schreiben und Lesen von Dateien aktiviert werden soll und ob beim Start ein Schaden festgestellt wird , Bei Beschädigung den Start stoppen. yes
. Wenn Sie beispielsweise die Speichernameneinstellung der RDB-Datei erhalten möchten, können Sie config get xxx
verwenden. Der Ausführungseffekt ist wie folgt: config get dbfilename
verwenden. Der Ausführungseffekt ist wie in der folgenden Abbildung dargestellt: config get dir
- Ändern Sie die Redis-Konfigurationsdatei manuell;
- Verwenden Sie beispielsweise die Befehlszeileneinstellungen
- Um das RDB-Speicherverzeichnis zu ändern.
config set dir "/usr/data"
Hinweis: Das manuelle Ändern der Redis-Konfigurationsdatei ist global wirksam, d es wird verloren gehen. Wenn Sie jedoch die Redis-Konfigurationsdatei manuell ändern möchten, damit sie sofort wirksam wird, müssen Sie den Redis-Server neu starten, die Befehlsmethode erfordert jedoch keinen Neustart des Redis-Servers.
Tipps: Die Redis-Konfigurationsdatei befindet sich im Stammpfad des Redis-Installationsverzeichnisses und der Standardname lautet redis.conf.
7.RDB-Dateiwiederherstellung
Wenn der Redis-Server startet und die RDB-Datei dump.rdb im Redis-Stammverzeichnis vorhanden ist, lädt Redis automatisch die RDB-Datei, um die persistenten Daten wiederherzustellen.
Wenn sich im Stammverzeichnis keine Datei „dump.rdb“ befindet, verschieben Sie die Datei „dump.rdb“ bitte zuerst in das Stammverzeichnis von Redis.
Überprüfen Sie, ob die RDB-Datei geladen ist
Redis verfügt beim Start über Protokollinformationen, die zeigen, ob die RDB-Datei geladen ist. Wir führen den Redis-Startbefehl aus: src/redis-server redis.conf
, wie gezeigt in der Abbildung unten:
Wie aus dem Protokoll ersichtlich ist, hat der Redis-Dienst die RDB-Datei beim Start normal geladen.
Tipps: Während der Redis-Server die RDB-Datei lädt, wird sie blockiert, bis die Ladearbeiten abgeschlossen sind.
8. RDB-Vorteile und -Nachteile
1) RDB-Vorteile
- RDB-Inhalte sind Binärdaten, beanspruchen weniger Speicher, sind kompakter und besser geeignet als Sicherungsdatei;
- RDB ist sehr nützlich für die Notfallwiederherstellung. Es handelt sich um eine kompakte Datei, die für die Wiederherstellung des Redis-Dienstes schneller übertragen werden kann Umfang Die Laufgeschwindigkeit liegt daran, dass der Redis-Hauptprozess jedes Mal einen untergeordneten Prozess forkt (), um die Daten auf der Festplatte beizubehalten. Der Redis-Hauptprozess führt keine Vorgänge wie Festplatten-E/A aus > und AOF RDB-Dateien können schneller neu gestartet werden als Dateien im Format.
- 2) Nachteile von RDB
- 9. Das Deaktivieren der Persistenz kann die Ausführungseffizienz von Redis verbessern. Wenn Sie nicht empfindlich auf Datenverlust reagieren, können Sie es ausführen, während Sie eine Verbindung zum Client herstellen.
- Der Befehl kann die Persistenz von Redis deaktivieren, wie in der folgenden Abbildung gezeigt:
config set save ""
Durch diesen Artikel können wir erfahren, dass die RDB-Persistenz in manuelle Unterteilungen unterteilt ist Es gibt zwei Methoden: Auslösen und automatisches Auslösen. Der Vorteil besteht darin, dass die Speicherdatei klein ist und die Datenwiederherstellung beim Start von Redis schneller erfolgt. Der Nachteil besteht darin, dass das Risiko eines Datenverlusts besteht. Das Wiederherstellen von RDB-Dateien ist ebenfalls sehr einfach. Sie müssen die RDB-Dateien nur im Stammverzeichnis von Redis ablegen, und die Daten werden beim Start von Redis automatisch geladen und wiederhergestellt. 11. Fragen, über die Sie nachdenken sollten
Wenn die CPU-Auslastung des Redis-Servers zu hoch ist, was kann die Ursache sein? Gerne können Sie Ihre Antworten in den Kommentarbereich schreiben.
12. Referenzen und Danksagungen
https://redis.io/topics/persistencehttps://blog.csdn.net/ qq_36318234/article/details/79994133
https://www.cnblogs.com/ysocean/p/9114268.html
https://www.cnblogs. com/wdliu/p/9377278.html
Dieser Artikel wurde reproduziert von: https://segmentfault.com/a/1190000021036574
Für weitere Redis-Kenntnisse achten Sie bitte auf Erste Schritte mit Redis Tutorial Spalte.
Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

HMGET wird in Redis verwendet, um die Werte mehrerer Felder aus einer Hash -Tabelle zu erhalten. 1. Es ruft mehrere Felder durch einen einzelnen Betrieb ab, um die Effizienz zu verbessern. 2. Wenn das Feld nicht existiert, geben Sie Nil anstelle eines Fehlers zurück; 3. Die Syntax ist HMGetKeyfield1 [Field2 ...], wie HMGetUser: 1000NameEemailage; 4. Bei der Verwendung sollte der Feldname einheitlich benannt werden, der Nullwert sollte verarbeitet werden und mehrere HGets sollten Priorität zur Reduzierung von Netzwerkausflügen erhalten. 5. Es ist für Szenarien geeignet, in denen mehrere Felder gleichzeitig erhalten werden müssen, und kann für fehlende Felder wie das Lesen von Benutzerdaten verarbeitet werden. 6. Verschiedene Sprachen wie Python, Node.js und GO haben entsprechende Implementierungsmethoden; 7. Bei der Verarbeitung der Ergebnisse sollten Sie darauf achten, festzustellen, ob sie existieren.

Das SET wird intern über eine Hash -Tabelle implementiert, so dass die durchschnittliche Zeitkomplexität des Insertions- und Suchvorgängers O (1) und der schlimmste Fall O (n) ist. Speziell: 1. Stellen Sie beim Einfügen eines Elements zuerst das Element ein und lokalisiert es in einem bestimmten Eimer im Speicher. Wenn der Eimer nicht besetzt ist, wird er direkt aufbewahrt. 2. Bei der Suche nach Elementen wird es auch direkt durch Hash -Positionierung festgelegt, ohne zu durchqueren. 3. Die Leistung wird durch die Qualität der Hash -Funktion, des Lastfaktors und des Hash -Konfliktverarbeitungsmechanismus beeinflusst, und die Effizienz kann in Situationen wie schwerwiegenden Hash -Konflikten oder Umsetzung von Baumbäumen abnehmen. Daher bietet SET in den meisten Szenarien eine schnelle Reaktion, die für Situationen geeignet sind, in denen Einzigartigkeit und effiziente Abfrage erforderlich sind.

TheRedisMEMORYUSAGEcommandestimatesthememoryconsumptionofaspecifickey.1.Itaccountsforboththevalueandinternalmetadata,providingresultsinbytes.2.Youcanuseittoidentifymemory-heavykeys,comparedatastructureefficiency,ortroubleshoothighmemoryusage.3.Forlar

ToexecutealuaScriptusingTheevalcommandinRedis, Usethesyntaxevalscriptnumkeyskey [Schlüssel ...] arg [arg ...]; 1)

Der Unterschied zwischen Zrem und ZremrangeByscore besteht darin, dass die Deletionsmethode unterschiedlich ist. 1. Zrem wird vom Mitglied gelöscht, verwendet, um ein oder mehrere bestimmte Mitglieder zu entfernen, und kümmert sich nicht um ihre Bewertungen und eignet sich zum Löschen bestimmter Benutzer oder Betrugsunternehmen. 2. Zremrangebyscore wird durch Fraktionsbereich gelöscht, für die Stapelreinigung von Daten mit niedrigem Score oder abgelaufenen Daten geeignet und unterstützt offene und geschlossene Intervalle. Beide unterstützen die Mehrfachdeletion und es werden keine Fehler gemeldet, es wird jedoch empfohlen, in niedrigen Spitzenzeiten beim Löschen einer großen Anzahl von Daten in der Leistung ausgeführt zu werden.

Wie gehe ich mit Gewerkschaft und Schnittstelle von sortiert in Redis um? Verwenden Sie die Befehle von ZunionStore und Zinterstore, um die Vereinigung und die Schnittstelle mehrerer bestellter Sätze zu berechnen, und speichern Sie die Ergebnisse in einem neuen Schlüssel. 1. ZunionStore wird für die Vereinigung verwendet, und die Punktzahl jedes Mitglieds ist die Summe seiner Bewertungen in jedem Satz standardmäßig. Gewichte können durch Gewichte eingestellt werden, und Aggregat gibt die Aggregationsmethode (Sum, min, max) an; 2. Zinterstore wird für den Schnittpunkt verwendet, und nur alle im angegebenen Satz existierenden Mitglieder werden erhalten, und die Bewertungen werden gemäß der Konfiguration aggregiert. 3. Beide Befehle können Gewichte und Aggregationsmethoden festlegen, die für Ranking Fusions, mehrdimensionale Datenfilterung und andere Szenarien geeignet sind.

ThelatcydoctorcommandisadiagnostictoolusedtoidentifyDanalyzesourcesoflatincinreal-Times-Systems.1) ITCHECKSSUBSYSTEMSLIKECPUSDULING, MEMAGE Access, NetworkStack, andhardwarreVerbottlencks

Geodist ist eine Funktion, mit der die gerade Linienabstand zwischen zwei Punkten auf der Erde berechnet wird. Bevor Sie es in Stata verwenden, muss es installiert werden: SscInstallgeodist. 1. Wenn Sie es verwenden, müssen Sie die Parameter Breiten- und Längengrad -Parameter der beiden Punkte angeben, z. 2. Wenn Sie eine Kilometereinheit benötigen, fügen Sie die Meile -Option hinzu. 3. achten Sie darauf, dass der Breitengrad und der Längengrad im Dezimalsystemformat liegen, der Bereich legal und die Reihenfolge der Variablen korrekt ist. 4. Während der Batch -Berechnung können Sie den Bezugspunkt auf alle Zeilen kopieren und den Befehl ausführen. Diese Methode eignet sich für die Auswahl der Speicherort, Verkehrsanalyse und andere Szenarien.


Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Dreamweaver CS6
Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Heiße Themen

