Technologieaustausch

NoSQL-Redis-Konfiguration und -Optimierung

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Grundlegende Einführung und Vergleich der Redis-Datenbank

Redis (RemoteDictionaryServer, Remote-Wörterbuchtyp) ist eine Open-Source-NoSQL-Datenbank, die in der Sprache C geschrieben ist. Redis läuft speicherbasiert und unterstützt Persistenz. Es übernimmt die Speicherform von Schlüsselwerten (Schlüsselwertpaaren) und ist ein unverzichtbarer Bestandteil der aktuellen verteilten Architektur.

1. Nicht relationale Datenbank

NoSQL (NoSQL= Not Only SQL), was „nicht nur SQL“ bedeutet, ist die allgemeine Bezeichnung für nicht-relationale Datenbanken. Zu den gängigen NoSQL-Datenbanken gehören Redis, MongBD, Hbase, CouhDB usw. Die oben genannten nicht-relationalen Datenbanken unterscheiden sich völlig in ihren Speichermethoden, Speicherstrukturen und Nutzungsszenarien. Daher glauben wir, dass es sich um eine Sammlung nicht relationaler Datenbanken handelt und nicht um einen allgemeinen Begriff wie relationale Datenbanken. Mit anderen Worten: Andere Datenbanken als die gängigen relationalen Datenbanken können als nicht relational betrachtet werden. Die NOSQL-Datenbank gilt aufgrund ihrer Vorteile der nicht relationalen, verteilten, Open Source- und horizontalen Erweiterung als Datenbankprodukt der nächsten Generation.

2. Relationale Datenbank

Eine relationale Datenbank ist eine strukturierte Datenbank, die auf einem relationalen Modell basiert und im Allgemeinen datensatzorientiert ist. Es verarbeitet Daten in Datenbanken mit Hilfe mathematischer Konzepte und Methoden wie der Mengenalgebra. Das relationale Modell bezieht sich auf das zweidimensionale Tabellenmodell. Eine relationale Datenbank ist also eine Datenorganisation, die aus zweidimensionalen Tabellen und den Beziehungen zwischen ihnen besteht. In der realen Welt können verschiedene Entitäten und verschiedene Beziehungen zwischen Entitäten durch relationale Modelle dargestellt werden. SQL-Anweisung (Standard Data Query Language) ist eine Sprache, die auf einer relationalen Datenbank basiert und zum Abrufen und Bearbeiten von Daten in einer relationalen Datenbank verwendet wird.

3. Hintergrund nicht-relationaler Datenbanken

Mit dem Aufkommen von Web2.0-Websites werden relationale Datenbanken beim Umgang mit Web2.0-Websites, insbesondere rein dynamischen Web2.0-Websites mit großen Datenmengen und hoher Parallelität, aufgedeckt. SNS (Social Networking Services, d. h. soziale Netzwerkdienste) Es gibt viele Probleme die schwer zu lösen sind, wie zum Beispiel das Drei-Hoch-Problem.

(1)Hohe Leistung – hohe gleichzeitige Lese- und Schreibanforderungen für die Datenbank

Web2.0-Websites generieren dynamische Seiten und stellen dynamische Informationen in Echtzeit basierend auf den personalisierten Informationen des Benutzers bereit, sodass die statische Technologie dynamischer Seiten nicht verwendet werden kann. Daher ist die gleichzeitige Belastung der Datenbank sehr hoch und erreicht im Allgemeinen mehr als 10.000 Lese- und Schreibanforderungen/s. Die relationale Datenbank kann immer noch kaum Zehntausende Abfrageanforderungen unterstützen, aber wenn es Zehntausende Datenschreibanforderungen gibt, kann die Festplatte I0 diese nicht mehr ertragen. Bei gewöhnlichen BBS-Websites gibt es häufig viele gleichzeitige Datenschreibanfragen.

(2) Riesiger Speicher – Anforderungen für die effiziente Speicherung und den Zugriff auf große Datenmengen

SNS-Websites wie Facebook und Friendfeed generieren täglich eine große Menge dynamischer Benutzerinformationen. Beispielsweise generiert Friendfeed nicht weniger als 250 Millionen dynamische Benutzerinformationen in einem Monat. Bei relationalen Datenbanken ist die Abfrageeffizienz sehr gering, wenn SQL-Abfragen in einer Tabelle mit 250 Millionen Datensätzen ausgeführt werden.

(3) Hohe Skalierbarkeit und hohe Verfügbarkeit – Anforderungen an hohe Skalierbarkeit und hohe Verfügbarkeit von Datenbanken

In der Webarchitektur ist die horizontale Skalierung der Datenbank am schwierigsten. Wenn die Anzahl der Benutzer und Besuche des Anwendungssystems von Tag zu Tag zunimmt, kann die Datenbank ihre Leistung und Belastbarkeit nicht einfach durch das Hinzufügen von Hardware und Serverknoten wie Webdiensten erweitern. Insbesondere bei einigen Websites, die 24 Stunden am Tag Dienste bereitstellen müssen, gehen Datenbank-Upgrades und -Erweiterungen häufig mit Ausfallzeiten, Wartungsarbeiten und Datenmigrationen einher, und der Arbeitsaufwand ist sehr groß.

Relationale Datenbanken und nicht-relationale Datenbanken haben ihre eigenen Eigenschaften und Anwendungsszenarien. Die enge Kombination beider wird neue Ideen für die Entwicklung von Web2.0-Datenbanken bringen. Bei relationalen Datenbanken liegt der Schwerpunkt auf Beziehungen, bei nicht relationalen Datenbanken liegt der Schwerpunkt auf der Speicherung. Beispielsweise können in einer MySQL-Datenbankumgebung, in der Lesen und Schreiben getrennt sind, häufig aufgerufene Daten in einer nicht relationalen Datenbank gespeichert werden, um die Zugriffsgeschwindigkeit zu verbessern.

4. Vorteile von Redis

Es verfügt über extrem hohe Datenlese- und -schreibgeschwindigkeiten. Die Datenlesegeschwindigkeit kann bis zu 110.000 Mal/s und die Datenschreibgeschwindigkeit bis zu 81.000 Mal/s erreichen.

Unterstützt umfangreiche Datentypen, unterstützt nicht nur einfache Daten vom Schlüsselwerttyp, sondern unterstützt auch Datentypoperationen wie Zeichenfolgen, Listen, Hashes, Mengen und geordnete Mengen.

Unterstützt die Datenpersistenz. Daten im Speicher können auf der Festplatte gespeichert und zur Verwendung bei einem Neustart erneut geladen werden.

Atomar, alle Redis-Operationen sind atomar.

Unterstützt Datensicherung, also Datensicherung im Master-Salve-Modus.

Redis ist eine speicherbasierte Datenbank und Caching ist eines der häufigsten Anwendungsszenarien. Darüber hinaus umfassen gängige Anwendungsszenarien von Redis auch Vorgänge zum Abrufen der neuesten N-Daten, Ranking-Anwendungen, Gegenanwendungen, Speicherbeziehungen, Echtzeit-Analysesysteme und Protokollierung.

2. Installation und Optimierung von Redis

1: Installation

[root@localhost ~]# systemctl stop firewalld // In der experimentellen Umgebung hat das Ausschalten der Firewall keine Auswirkung. Es wird nicht empfohlen, sie in der Produktionsumgebung auszuschalten. Versuchen Sie, eine Firewall-Richtlinie hinzuzufügen.

[root@localhost ~]# setenforce 0 //Kernel ausschalten, wodurch die Ausführung der Anwendung blockiert wird.

[root@localhost ~]# yum -y install gcc* zlib-devel //Laden Sie die zum Dekomprimieren des TAR-Pakets erforderlichen Tools herunter

[root@localhost ~]tar xvzf redis-4.0.9.tar.gz //redis ist eine Open-Source- und kostenlose Anwendung. Sie können dieses Paket von der offiziellen Website herunterladen

[root@localhost ~]cd redis-4.0.9/

[root@localhost redis-4.0.9]# machen

Beachten:

Beim Erstellen kann die folgende Fehlermeldung erscheinen:

Lösung 1: Verwendenmache MALLOC=libc gibt den Speicherzuweiser für libc ankompilieren

Lösung 2: && ma sauber machenke distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis installieren

[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/

[root@localhost-Dienstprogramme]# ./install_server.sh

Anmerkung:

Konfigurationsdatei: /etc/redis/6379.conf //Pfad der Konfigurationsdatei

Protokolldatei: /var/log/redis_6379.log //Pfad der Protokolldatei

Datenverzeichnis: /var/lib/redis/6379 //Datendateipfad

Ausführbare Datei: /usr/local/redis/bin/redis-server //pfad der ausführbaren Datei

Ausführbare Cli-Datei: /usr/local/redis/bin/redis-cli //Client-Befehlszeilentool

2: Sehen Sie sich den Prozess an

[root@localhost-Dienstprogramme]# netstat -anpt | grep redis

3: Servicekontrolle

[root@localhost ~]#/etc/init.d/redis_6379 stoppen

[root@localhost ~]#/etc/init.d/redis_6379 starten

[root@localhost ~]#/etc/init.d/redis_6379 Neustart

[root@localhost ~]#/etc/init.d/redis_6379 status

4: Änderung der Konfigurationsparameter

[root@localhost ~]#vim /etc/redis/6379.conf

binden 127.0.0.1 192.168.10.101    //Hostadresse abhören

Port 6379 //Hafen

dämonisieren ja //Daemon-Prozess aktivieren

pid-Datei /var/run/redis_6379.pid //PID-Datei angeben

Loglevel-Hinweis //Protokollebene

Protokolldatei /var/log/redis_6379.log //Protokolldatei angeben

[root@localhost~]#/etc/init.d/redis_6379 Neustart

[root@localhost-Dienstprogramme]# netstat -anpt | grep redis

3. Redis-Befehlstool

Ø redis-server: Tool zum Starten von Redis;

Ø Redis-Benchmark: Wird verwendet, um die Betriebseffizienz von Redis auf dieser Maschine zu ermitteln.

Ø redis-check-aof: AOF-Persistenzdatei reparieren;

Ø redis-check-rdb: RDB-Persistenzdateien reparieren;

Ø redis-cli: Redis-Befehlszeilentool.

1: Befehlszeilentool redis-cli

(1) Stellen Sie eine Verbindung zu lokalen Redis her

[root@localhost ~]# redis-cli

127.0.0.1:6379>

(2) Testen Sie, ob der Redis-Dienst gestartet ist

127.0.0.1:6379> ping

PONG

(3) Remote-Verbindung

[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379

2: Holen Sie sich Hilfe

Ø Hilfe@<group> :Erhalten<group> Befehlsliste in ;

Ø Hilfe<command> : Hilfe für einen Befehl erhalten;

Ø Hilfe<tab> : Holen Sie sich eine Liste mit Themen, die hilfreich sein könnten.

Anmerkung:

Ø Hilfe<tab> : Holen Sie sich eine Liste mit Themen, die hilfreich sein könnten.

Nachdem Sie Hilfe eingegeben haben, drücken Sie die Tabulatortaste

(1)Alle Befehle anzeigen, die sich auf den Datentyp „Liste“ beziehen

127.0.0.1:6379&gt;Hilfe @Liste

(2)Sehen Sie sich die Befehlshilfe für den Set-Befehl an

127.0.0.1:6379&gt;Hilfesatz

3: Redis-Benchmark-Testtool

redis-benchmark ist das offizielle Redis-Leistungstesttool, mit dem die Leistung von Redis-Diensten effektiv getestet werden kann.

Ø -h: Geben Sie den Hostnamen des Servers an.

Ø -p: Geben Sie den Server-Port an;

Ø -s: Server-Socket angeben;

Ø -c: Geben Sie die Anzahl gleichzeitiger Verbindungen an.

Ø -n: Geben Sie die Anzahl der Anfragen an;

Ø -d: Geben Sie die Datengröße des SET/GET-Werts in Bytes an;

Ø -k: 1 = am Leben bleiben, 0 = erneut verbinden;

Ø -r: SET/GET/INCR verwendet Zufallsschlüssel, SADD verwendet Zufallswerte;

Ø -P: Übertragung durch Rohre<numreq> fragen;

Ø -q: Redis beenden erzwingen. Es werden nur Abfrage-/Sek.-Werte angezeigt.

Ø --csv: Ausgabe im CSV-Format;

Ø -l: Erzeugen Sie eine Schleife und führen Sie den Test dauerhaft aus.

Ø -t: Nur eine durch Kommas getrennte Liste von Testbefehlen ausführen;

Ø -I: Ruhemodus. Öffnen Sie nur N freie Verbindungen und warten Sie.

(1) Leistung der Testanforderung

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000 //Sende 100 gleichzeitige Verbindungen und 100000 Anforderungstests an den Redis-Server mit IP-Adresse 192.168.10.101 und Port 6379-Leistung

Anmerkung:

Ø -h: Geben Sie den Hostnamen des Servers an.

Ø -p: Geben Sie den Server-Port an;

Ø -c: Geben Sie die Anzahl gleichzeitiger Verbindungen an.

Ø -n: Geben Sie die Anzahl der Anfragen an;

====== MSET (10 Tasten) ======

100000 Anfragen in 1,02 Sekunden abgeschlossen

100 parallele Clients ##100 gleichzeitige Verbindungen

3 Byte Nutzlast

am Leben bleiben: 1

87,25 % &lt;= 1 Millisekunde ##87,25 % der Befehlsausführungszeiten sind kleiner oder gleich 1 Millisekunde

99,90 % &lt;= 2 Millisekunden

100,00 % &lt;= 2 Millisekunden

97943,19 Anfragen pro Sekunde #Anzahl der Anfragen pro Sekunde

(2) Testen Sie die Zugriffsleistung

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Anmerkung:

Ø -h: Geben Sie den Hostnamen des Servers an.

Ø -p: Geben Sie den Server-Port an;

Ø -d: Geben Sie die Datengröße des SET/GET-Werts in Bytes an;

Ø -q: Redis beenden erzwingen. Es werden nur Abfrage-/Sek.-Werte angezeigt.

PING_INLINE: 121506,68 Anfragen pro Sekunde //Wie viele PING-Vorgänge pro Sekunde abgeschlossen werden

PING_BULK: 124378,11 Anfragen pro Sekunde

SET: 121654,50 Anfragen pro Sekunde //Wie oft pro Sekunde wird der SET-Tastendruck ausgeführt?

GET: 122100,12 Anfragen pro Sekunde //Wie viele GET-Schlüsselwerte pro Sekunde abgeschlossen werden

INCR: 118764,84 Anfragen pro Sekunde //Wie viele Atomzählungen werden pro Sekunde durchgeführt?

LPUSH: 112612,61 Anfragen pro Sekunde

RPUSH: 118623,96 Anfragen pro Sekunde

LPOP: 107874,87 Anfragen pro Sekunde

RPOP: 114416,48 Anfragen pro Sekunde

SADD: 123304,56 Anfragen pro Sekunde

HSET: 122249,38 Anfragen pro Sekunde

SPOP: 128040,97 Anfragen pro Sekunde

LPUSH (zum Benchmarking von LRANGE erforderlich): 116686,12 Anfragen pro Sekunde

LRANGE_100 (erste 100 Elemente): 40016,00 Anfragen pro Sekunde

LRANGE_300 (erste 300 Elemente): 11991,85 Anfragen pro Sekunde

LRANGE_500 (erste 450 Elemente): 7381,71 Anfragen pro Sekunde

LRANGE_600 (erste 600 Elemente): 5230,67 Anfragen pro Sekunde

MSET (10 Schlüssel): 92421,44 Anfragen pro Sekunde //Mehrere Schlüssel v pro SekundelaueAnzahl der Anfragen

(3)Betriebsleistung einstellen und erhöhen

[root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q //Testen Sie die Leistung des Redis-Dienstes auf diesem Computer während Set- und LPush-Vorgängen.

Anmerkung:

Ø -n: Geben Sie die Anzahl der Anfragen an;

Ø -q: Redis beenden erzwingen. Es werden nur Abfrage-/Sek.-Werte angezeigt.

Ø -t: Nur eine durch Kommas getrennte Liste von Testbefehlen ausführen;

SET: 121951,22 Anfragen pro Sekunde

LPUSH: 127226,46 Anfragen pro Sekunde

4. Redis Allgemeine Datenbankbefehle

Ø Satz: Daten speichern. Das grundlegende Befehlsformat ist Schlüsselwert festlegen

Ø erhalten: Daten abrufen, das grundlegende Befehlsformat ist Schlüssel bekommen

1Schlüssel Verwandte Befehle

existieren Redis in der Datenbank, mit Schlüssel Zu den relevanten Befehlen gehören hauptsächlich die folgenden.

1) Schlüssel-Wert-Paare hinzufügen

verwenden Schlüssel Der Befehl kann eine Liste von Schlüsselwerten annehmen, die den Regeln entsprechen. Normalerweise kann er kombiniert werden* ,? zu verwendende Optionen.

127.0.0.1:6379>Satz k1 1

OK

127.0.0.1:6379>Satz k2 2

OK

127.0.0.1:6379>Menge k3 3

OK

127.0.0.1:6379>Satz v1 4

OK

127.0.0.1:6379>Satz V5 5

OK

(2) Alle Schlüssel in der aktuellen Datenbank anzeigen

127.0.0.1:6379>SCHLÜSSEL  *  

1) "Lehrer"

2) "k1"

3) "k2"

4) "k3"

5) „v1“

6) „v5“

127.0.0.1:6379>Satz V22 5

OK

(3) Zeigen Sie die aktuelle Datenbank an mit gegen Daten am Anfang

127.0.0.1:6379>SCHLÜSSEL v*    

1) "v1"

2) „v5“

3) „v22“

(4) Zeigen Sie die aktuelle Datenbank mit an gegen Enthält beliebige Datenbits nach dem Anfang

127.0.0.1:6379>SCHLÜSSEL v?   

1) "v1"

2) „v5“

(5) Zeigen Sie die aktuelle Datenbank mit an gegen Anfang gegen Enthält zwei beliebige Datenziffern nach dem Anfang

127.0.0.1:6379>SCHLÜSSEL v??   

1) „v22“

2:existiert

existiert Der Befehl kann feststellen, ob der Schlüsselwert vorhanden ist

127.0.0.1:6379>existiert Lehrer

(Ganzzahl) 1

Das Ergebnis ist 1, was bedeutet Lehrer Schlüssel existiert

127.0.0.1:6379>existiert Tee

(Ganzzahl) 0

Das Ergebnis ist 0, was bedeutet Tee Schlüssel existiert nicht

3: löschen

del Der Befehl kann das angegebene löschen Schlüssel

127.0.0.1:6379>Schlüssel *

1) "Lehrer"

2) „v1“

3) „v22“

4) "k3"

5) "k1"

6) "k2"

7) „Version 5“

127.0.0.1:6379> del v5

(Ganzzahl) 1

127.0.0.1:6379>Holen Sie sich v5

(Null)

4:Typ

verwenden Typ Der Befehl kann abgerufen werden Schlüssel dazugehörigen Wert Werttyp

127.0.0.1:6379>Typ k1

Schnur

Anmerkung:

Von Redis unterstützte Datentypen

  • String: Der einfachste Typ, der normale Set-and-Get-Typ, der für das Zwischenspeichern von Schlüsselwerten verwendet wird.
  • Hash: Eine Struktur ähnlich einer Karte. Im Allgemeinen können strukturierte Daten, z. B. ein Objekt, in Redis zwischengespeichert werden.
  • Liste: Liste ist eine geordnete Liste. Sie können Listen verwenden, um einige Datenstrukturen vom Typ Liste zu speichern, z. B. Fanlisten, Artikelkommentarlisten usw.
  • Set: Set ist eine ungeordnete Sammlung, die Duplikate automatisch entfernt.
  • Sortierter Satz: Sortierter Satz ist ein sortierter Satz, der dedupliziert, aber sortiert werden kann. Beim Einschreiben wird eine Punktzahl angegeben und automatisch nach der Punktzahl sortiert.

5:umbenennen

umbenennen Der Befehl gilt für eine vorhandene Schlüssel umbenennen

Im tatsächlichen Gebrauch wird die Verwendung empfohlen existiert Befehl zum Anzeigen des Ziels Schlüssel existiert, und entscheiden Sie dann, ob es ausgeführt werden soll umbenennen Befehl, um das Überschreiben wichtiger Daten zu vermeiden

127.0.0.1:6379>Tasten v*

1) "v1"

2) „v22“

127.0.0.1:6379>umbenennen v22 v2

OK

127.0.0.1:6379>Tasten v*

1) "v1"

2) „v2“

127.0.0.1:6379>Holen Sie sich v1

"4"

127.0.0.1:6379>v2 erhalten

"5"

127.0.0.1:6379>umbenennen v1 v2

OK

127.0.0.1:6379>Holen Sie sich v1

(Null)

127.0.0.1:6379>v2 erhalten

"4"

6:umbenennen

umbenennen Die Funktion des Befehls besteht darin, das Vorhandene zu ändern Schlüssel Führen Sie eine Umbenennung durch und prüfen Sie, ob der neue Name existiert.

verwendenumbenennen Wenn der Befehl umbenannt wird, wenn das Ziel Schlüssel Wenn es existiert, wird es nicht umbenannt.

127.0.0.1:6379>Schlüssel *

1) "Lehrer"

2) "k3"

3) "k1"

4) "k2"

5) „v2“

127.0.0.1:6379>Lehrer bekommen

"zhanglong"

127.0.0.1:6379>v2 erhalten

"4"

127.0.0.1:6379>renamenx v2 Lehrer

(Ganzzahl) 0

127.0.0.1:6379>Schlüssel *

1) "Lehrer"

2) "k3"

3) "k1"

4) "k2"

5) „v2“

127.0.0.1:6379>Lehrer bekommen

"zhanglong"

127.0.0.1:6379>v2 erhalten

"4

7:Datenbankgröße

Datenbankgröße Der Zweck des Befehls besteht darin, die aktuelle Datenbank anzuzeigen Schlüssel Anzahl.

127.0.0.1:6379> Datenbankgröße

(Ganzzahl) 5

5. Allgemeine Befehle für mehrere Datenbanken

1: Wechsel zwischen mehreren Datenbanken

Redis Standardmäßig ohne Änderungen enthalten 16 Datenbank, der Datenbankname ist eine Zahl 0-15 der Reihe nach benannt werden

(1)Wechseln Sie zur Seriennummer 10 Datenbank

127.0.0.1:6379>Wählen Sie 10

OK

(2)Wechseln Sie zur Seriennummer 15 Datenbank

127.0.0.1:6379[10]>Wählen Sie 15

OK

(3)Wechseln Sie zur Seriennummer 0 Datenbank

127.0.0.1:6379[15]>Wählen Sie 0

2: Daten zwischen mehreren Datenbanken verschieben

Redis Die mehreren Datenbanken sind bis zu einem gewissen Grad relativ unabhängig, beispielsweise in der Datenbank 0 Oben lagern k1 Daten, in anderen 1-15 Es kann nicht in der Datenbank angezeigt werden.

127.0.0.1:6379>Satz K1 100

OK

127.0.0.1:6379>Holen Sie sich k1

"100"

127.0.0.1:6379>Wählen Sie 1

OK

127.0.0.1:6379[1]>Holen Sie sich k1

(Null)

127.0.0.1:6379[1]>Wählen Sie 0 //Wechseln Sie zur Zieldatenbank 0

OK

127.0.0.1:6379>Holen Sie sich k1 //Prüfen Sie, ob die Zieldaten vorhanden sind

"100"

127.0.0.1:6379>Zug k1 1 //Datenbank 0 Mitte k1 In die Datenbank verschieben 1 Mitte

(Ganzzahl) 1

127.0.0.1:6379>Wählen Sie 1 //Wechseln Sie zur Zieldatenbank 1

OK

127.0.0.1:6379[1]>Holen Sie sich k1 //Verschobene Daten anzeigen

"100"

127.0.0.1:6379[1]> Wählen Sie 0

OK

127.0.0.1:6379> Holen Sie sich k1 //in der Datenbank 0 Kann nicht angezeigt werden k1 Wert

(Null)

3: Löschen Sie die Daten in der Datenbank

Um die aktuellen Datenbankdaten zu löschen, verwenden Sie FLUSHDB

Befehlsimplementierung; alle Datenbankdaten löschen, verwenden FLUSHALL Befehlsimplementierung

6. Redis-Persistenz

Redis Alle Daten werden im Speicher gespeichert und dann von Zeit zu Zeit asynchron auf der Festplatte gespeichert.(Das nennt manSemi-persistenter Modus”); Sie können jede Datenänderung auch in eine schreiben nur Datei anhängen (aof)In(Das nennt manVollständiger Persistenzmodus”)

Da Redis-Daten im Speicher gespeichert werden und die Persistenz nicht konfiguriert ist,Redis Nach dem Neustart gehen alle Daten verloren.Daher ist eine Aktivierung erforderlichRedis Die Persistenzfunktion speichert Daten auf der Festplatte Redis Nach einem Neustart können Daten von der Festplatte wiederhergestellt werden.Redis Für die Persistenz stehen zwei Methoden zur Verfügung, eine davon RDBRedis-Datenbank Beharrlichkeit (das Prinzip ist ReidsTiming der speicherinternen Datenbankprotokollierung entsorgen auf die Festplatte RDB Beharrlichkeit), das andere ist AOFnur anhängen DateiBeharrlichkeit (das Prinzip ist Reids Das Betriebsprotokoll wird als Anhang in die Datei geschrieben.

1:RDB Und AOF Der Unterschied

(1) Was ist RDB?

Die Standardmethode

Bei der RDB-Persistenz wird ein Snapshot der aktuellen Prozessdaten erstellt und auf der Festplatte gespeichert. Der Prozess zum Auslösen der RDB-Persistenz ist in manuelles Auslösen und automatisches Auslösen unterteilt.

Auslösemechanismus: Die manuelle Auslösung entspricht den Befehlen save bzw. bgsave.

Speicherbefehl: Blockiert den aktuellen Redis-Server, bis der RDB-Prozess abgeschlossen ist. Bei Instanzen mit viel Speicher führt dies zu einer Zeitblockierung. Nicht für die Verwendung in Online-Umgebungen empfohlen.

bgsave-Befehl: Der Redis-Prozess führt die Fork-Operation (Funktion zum Erstellen eines Prozesses) aus, um einen untergeordneten Prozess zu erstellen. Der RDB-Persistenzprozess ist für den untergeordneten Prozess verantwortlich und endet automatisch nach Abschluss. Die Blockierung erfolgt nur während der Fork-Phase.

(2) Vor- und Nachteile von RDB:

Vorteile von RDB:

RDB ist eine kompakte, komprimierte Binärdatei, die eine Momentaufnahme der Redis-Daten zu einem bestimmten Zeitpunkt darstellt. Es eignet sich sehr gut für Backups, vollständige Kopien und andere Szenarien. Führen Sie beispielsweise alle 6 Stunden ein bgsave-Backup durch und kopieren Sie die RDB-Datei zur Notfallwiederherstellung auf den Remote-Computer oder das Dateisystem.

Redis lädt RDB und stellt Daten viel schneller wieder her als die AOF-Methode.

Nachteile von RDB:

Daten im RDB-Modus können keine Echtzeitpersistenz/Persistenz der zweiten Ebene erreichen. Denn jedes Mal, wenn bgsave ausgeführt wird, wird eine Fork-Operation ausgeführt, um einen untergeordneten Prozess zu erstellen. Dies ist eine schwere Operation und die Kosten für eine häufige Ausführung sind zu hoch.

RDB-Dateien werden in einem bestimmten Binärformat gespeichert. Während der Entwicklung von Redis-Versionen gibt es mehrere Formate von RDB-Versionen. Es besteht das Problem, dass die alte Version des Redis-Dienstes nicht mit der neuen Version des RDB-Formats kompatibel ist.

2. Was ist AOF?

AOF-Persistenz (nur Datei anhängen): Zeichnen Sie jeden Schreibbefehl in einem unabhängigen Protokoll auf und führen Sie den Befehl dann in der AOF-Datei erneut aus, um die Daten beim Neustart wiederherzustellen. Die Hauptfunktion von AOF besteht darin, das Echtzeitproblem der Datenpersistenz zu lösen. Dies ist heute der Mainstream der Redis-Persistenz.

Kriterien für die Wahl zwischen den beiden:

Opfern Sie etwas Leistung im Austausch für eine höhere Cache-Konsistenz (AOF),

Bei häufigen Schreibvorgängen sollten Sie die Sicherung nicht im Austausch für eine höhere Leistung aktivieren und auf den manuellen Vorgang warten. speichern Wann, erstellen Sie erneut ein Backup (RDB

Anmerkung:

Wenn nach dem Neustart von Redies eine persistente Datei geladen werden muss, werden AOF-Dateien ausgewählt.

Wenn RDB zuerst und dann AOF aktiviert wird und RDB zuerst beibehalten wird, werden die Inhalte in der RDB-Datei von AOF überschrieben.

3:Redis Persistenzkonfiguration

(1)RDB Persistenzkonfiguration

[root@localhost ~]# vim /etc/redis/6379.conf

Öffnen Sie 6379.conf Suchen Sie nach der Datei speichern, können Sie die Konfigurationsinformationen wie unten gezeigt sehen.

  • Ø save 900 1: Wenn sich nach 900 Sekunden (15 Minuten) mindestens eine Taste ändert, wird der Speicherauszug gelöscht.
  • Ø save 300 10: Wenn sich nach 300 Sekunden (5 Minuten) mindestens 10 Schlüssel geändert haben, wird der Speicherauszug gelöscht.
  • Ø save 60 10000: Wenn sich nach 60 Sekunden (1 Minute) mindestens 10000 Schlüssel geändert haben, wird der Speicher-Snapshot gelöscht.
  • dbfilename dump.rdb: RDB-Dateiname ##254 Zeile
  • dir /var/lib/redis/6379: RDB-Dateipfad ##264 Zeile
  • rdbcompression ja: Ob Zeile ##242 komprimiert werden soll

(2) AOF Persistenzkonfiguration

existieren Redis Die Konfigurationsdatei enthält drei Synchronisierungsmethoden:

  • appendonly ja: AOF-Persistenz aktivieren (Standard ist nein) ##673 Zeile
  • appendfilename „appendonly.aof“: AOF-Dateiname ##677 Zeile
  • # appendfsync immer
  • appendfsync jede Sekunde
  • # appendfsync nein

Immer: Synchrone Persistenz. Jedes Mal, wenn sich Daten ändern, werden sie sofort auf die Festplatte geschrieben

everysec: Standardmäßig empfohlen, jede Sekunde asynchron aufzeichnen (Standardwert)

nein: Keine Synchronisierung, es bleibt dem Betriebssystem überlassen, zu entscheiden, wie synchronisiert wird

  • aof-load-truncated ja ##769 für

Ignorieren Sie die letzte möglicherweise problematische Anweisung

[root@localhost ~]#/etc/init.d/redis_6379 Neustart

(2) AOF-Umschreibung

Um es zu lösen AOF Wenn die Dateigröße weiter zunimmt, können Benutzer dies melden Redis schicken BGREWRITEAOFBefehl.BGREWRITEAOF Der Befehl wird über entfernt AOF redundante Befehle in der Datei, die überschrieben werden sollen (umschreibenAOFDatei, machen AOF Halten Sie die Dateigröße so klein wie möglich.

127.0.0.1:6379&gt; bgrewriteaof

Nur Anhängen im Hintergrund – Neuschreiben der Datei gestartet

# Wenn das Protokoll BGREWRITEAOF ist,Wennkein Anhängen von fsync beim NeuschreibenAuf „Ja“ setzen, was bedeutet, dass neue Schreibvorgänge nicht mit fsync synchronisiert, sondern nur vorübergehend im Puffer gespeichert werden. Um Konflikte bei Festplatten-E/A-Vorgängen zu vermeiden, warten Sie mit dem Schreiben, bis das Neuschreiben abgeschlossen ist. Der Standardwert in Redis ist „Nein“.

kein-appendfsync-on-rewrite nein

# Wenn die aktuelle AOF-Dateigröße doppelt so groß ist wie die AOF-Datei beim letzten Protokollumschreiben, wird der BGREWRITEAOF-Vorgang ausgeführt.

automatischer Aof-Umschreibprozentsatz 100

Anmerkung:

100 bezieht sich aufDas AOF-Dateiwachstumsverhältnis bezieht sich auf das Wachstumsverhältnis der aktuellen AOF-Datei im Vergleich zum letzten Neuschreiben.100 ist doppelt

#Der Mindestwert der aktuellen AOF-Datei zum Ausführen des BGREWRITEAOF-Befehls, um häufiges BGREWRITEAOF aufgrund der geringen Dateigröße beim ersten Start von Reids zu vermeiden.

Auto-Aof-Rewrite – Mindestgröße 64 MB

7. Leistungsmanagement

1: Speicherinformationen anzeigen

192.168.9.236:7001> Infospeicher

used_memory:1210776 #Die Größe des verwendeten Speichers,in Bytes
used_memory_human:1.15M # Anzeige mit Einheit,in M
used_memory_rss:7802880 # Wie viel Speicher belegt Redis aus Sicht des Betriebssystems?
used_memory_rss_human:7.44M # Anzeige mit Einheit
maxmemory:1073741824 # Maximale Speichergröße
maxmemory_human:1.00G # Anzeige mit Einheit

2: Recyclingstrategie

MaxMemory-Richtlinie: Recyclingstrategie

Ø flüchtig-lru: es erlaubt Redis Wählen Sie aus dem gesamten Datensatz den zuletzt verwendeten aus Schlüssel Löschen

Ø flüchtig-ttlEliminieren Sie entsprechend der Ablaufzeit des Schlüssels 

Ø flüchtig-zufällig: Wählen Sie nach dem Zufallsprinzip Daten zur Eliminierung aus der Datensammlung mit festgelegter Ablaufzeit aus.

Ø allkeys-lru:verwenden LRU Algorithmen eliminieren Daten aus allen Datensätzen;

Ø alle Tasten zufällig: Daten zur Eliminierung aus der Datensammlung zufällig auswählen;

Ø keine Räumung: Datenlöschung deaktivieren (Standardwert)

Anmerkung:

Legen Sie die Ablaufzeit des Schlüssels fest

ablaufen v1 10

v1 hat eine Ablaufzeit von 10 Sekunden

Anmerkung:

Wann Redis Aufgrund von Speichermangel muss eines zurückgefordert werden Schlüssel Stunde,Redis Die erste Überlegung besteht darin, nicht die ältesten Daten zu recyceln, sondern die am längsten verwendeten Daten. Schlüssel oder bald abläuft Schlüssel Wählen Sie zufällig eines aus Schlüssel, aus dem Datensatz entfernt

8. Legen Sie das Passwort für Redis fest

1: Einstellungsmethode

Methode 1. Legen Sie das Passwort über die Konfigurationsdatei redis.conf fest

Suchen Sie das Schlüsselwort requirepass, gefolgt vom Passwort. Es ist standardmäßig auskommentiert, d. h. es ist standardmäßig kein Passwort erforderlich, wie folgt:

Öffnen Sie den Kommentar, legen Sie ihn als Ihr eigenes Passwort fest und starten Sie neu

Methode 2. Passwort durch Benennung festlegen

Verwenden Sie redis-cli, um eine Verbindung zu Redis herzustellen, und führen Sie den folgenden Befehl aus

Konfigurationssatz requirepass 123456

Nach Abschluss der Ausführung ist kein Neustart erforderlich. Sie müssen Ihr Passwort eingeben, wenn Sie den Client verlassen und sich erneut anmelden.

2.Verbindungsmethode

1. Geben Sie beim Herstellen der Verbindung Ihr Passwort ein

[root@localhost bin]# ./redis-cli -a 123456

2. Stellen Sie zunächst eine Verbindung her und geben Sie dann das Passwort ein

[root@localhost bin]# ./redis-cli127.0.0.1:6379&gt; auth 123456

3: Close-Methode

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4: Unterschied

1) Das durch Ändern der Konfigurationsdatei festgelegte Passwort wird dauerhaft wirksam. Das mit dem Befehl festgelegte Passwort wird vorübergehend wirksam und wird nach dem Neustart ungültig.

2) Um das in der Konfigurationsdatei festgelegte Kennwort zu ändern, ist ein Neustart erforderlich. Verwenden Sie das durch den Befehl festgelegte Kennwort, damit es nach dem Abmelden und erneuten Anmelden wirksam wird. Nach dem Neustart wird es ungültig.

3) Die Priorität des Befehls ist höher als die Priorität der Konfigurationsdatei