2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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.
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.
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.
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.
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.
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.
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.
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.
[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
[root@localhost-Dienstprogramme]# netstat -anpt | grep redis
[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
[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
Ø 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.
[root@localhost ~]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> ping
PONG
[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379
Ø 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
127.0.0.1:6379>Hilfe @Liste
127.0.0.1:6379>Hilfesatz
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.
[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 % <= 1 Millisekunde ##87,25 % der Befehlsausführungszeiten sind kleiner oder gleich 1 Millisekunde
99,90 % <= 2 Millisekunden
100,00 % <= 2 Millisekunden
97943,19 Anfragen pro Sekunde #Anzahl der Anfragen pro Sekunde
[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
[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
Ø Satz: Daten speichern. Das grundlegende Befehlsformat ist Schlüsselwert festlegen。
Ø erhalten: Daten abrufen, das grundlegende Befehlsformat ist Schlüssel bekommen。
existieren Redis in der Datenbank, mit Schlüssel Zu den relevanten Befehlen gehören hauptsächlich die folgenden.
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
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
127.0.0.1:6379>SCHLÜSSEL v*
1) "v1"
2) „v5“
3) „v22“
127.0.0.1:6379>SCHLÜSSEL v?
1) "v1"
2) „v5“
127.0.0.1:6379>SCHLÜSSEL v??
1) „v22“
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
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)
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
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"
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
Datenbankgröße Der Zweck des Befehls besteht darin, die aktuelle Datenbank anzuzeigen Schlüssel Anzahl.
127.0.0.1:6379> Datenbankgröße
(Ganzzahl) 5
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
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)
Um die aktuellen Datenbankdaten zu löschen, verwenden Sie FLUSHDB
Befehlsimplementierung; alle Datenbankdaten löschen, verwenden FLUSHALL Befehlsimplementierung
Redis Alle Daten werden im Speicher gespeichert und dann von Zeit zu Zeit asynchron auf der Festplatte gespeichert.(Das nennt man“Semi-persistenter Modus”); Sie können jede Datenänderung auch in eine schreiben nur Datei anhängen (aof)In(Das nennt man“Vollstä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 RDB(Redis-Datenbank) Beharrlichkeit (das Prinzip ist ReidsTiming der speicherinternen Datenbankprotokollierung entsorgen auf die Festplatte RDB Beharrlichkeit), das andere ist AOF(nur anhängen Datei)Beharrlichkeit (das Prinzip ist Reids Das Betriebsprotokoll wird als Anhang in die Datei geschrieben.
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.
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.
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.
[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.
existieren Redis Die Konfigurationsdatei enthält drei Synchronisierungsmethoden:
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
Ignorieren Sie die letzte möglicherweise problematische Anweisung
[root@localhost ~]#/etc/init.d/redis_6379 Neustart
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 (umschreiben)AOFDatei, machen AOF Halten Sie die Dateigröße so klein wie möglich.
127.0.0.1:6379> 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
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
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-ttl:Eliminieren 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
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
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.
[root@localhost bin]# ./redis-cli -a 123456
[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456
[root@localhost bin]# ./redis-cli -a 123456 shutdown
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