Mindmap-Galerie Redis
Dies ist eine Mindmap über Redis, mit einer detaillierten Einführung und einer umfassenden Beschreibung. Ich hoffe, dass sie für interessierte Freunde hilfreich ist!
Bearbeitet um 2023-12-21 17:36:42Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
Redis
Angelegenheiten
Definition
Eine Transaktion ist ein separater Isolationsvorgang. Alle Vorgänge in der Transaktion werden der Reihe nach ausgeführt. Die Transaktionsausführung wird nicht durch von anderen Kundendienstterminals gesendete Befehle unterbrochen.
Wirkung
Verketten Sie mehrere Befehle, um zu verhindern, dass andere Befehle in die Warteschlange springen
Befehl
WATCH-Taste [Taste ...]
Bevor Sie Multi ausführen, führen Sie zuerst watch key1 [key2] aus, der einen (oder mehrere) Schlüssel überwachen kann. Wenn dieser (oder diese) Schlüssel vor der Ausführung der Transaktion durch andere Befehle geändert werden, wird die Transaktion unterbrochen.
Multi
Die eingegebenen Befehle gelangen in die Befehlswarteschlange, werden jedoch nicht ausgeführt. Sie warten auf die Ausführung des Exec-Befehls und führen sie dann nacheinander aus.
Geschäftsführer
Befehlswarteschlange ausführen
verwerfen
Befehlswarteschlange löschen
Behandlung von Transaktionsfehlern
Die Teambildung ist erfolgreich und die Ausführung ist erfolgreich. Alle Befehle werden ordnungsgemäß ausgeführt.
Wenn das Team erfolgreich gebildet wurde, wählen Sie „Verwerfen“ und alle Befehle werden nicht ausgeführt.
Wenn bei einem Befehl in der Warteschlange ein Fehler auftritt, wird die gesamte Warteschlange während der Ausführung abgebrochen.
Das Team wurde erfolgreich gebildet, aber ein bestimmter Befehl geht während der Ausführung schief. Bis auf den falschen Befehl werden alle anderen Befehle ausgeführt.
Redis-Transaktionen sind nicht atomar
Drei Hauptmerkmale von Redis-Transaktionen
separate Quarantäneoperationen
Alle Befehle in einer Transaktion werden serialisiert und nacheinander ausgeführt. Während der Ausführung der Transaktion wird diese nicht durch Befehlsanfragen anderer Clients unterbrochen.
Kein Konzept der Isolationsstufe
Die Befehle in der Warteschlange werden erst dann tatsächlich ausgeführt, wenn sie übermittelt werden, da vor der Übermittlung der Transaktion keine Anweisungen tatsächlich ausgeführt werden.
Keine Garantie für Atomizität
Wenn ein Befehl in der Transaktion nicht ausgeführt werden kann, werden nachfolgende Befehle trotzdem ohne Rollback ausgeführt.
Der Unterschied zwischen Redis-Transaktionen und MySQL-Transaktionen (rund um ACID)
Beharrlichkeit
RDB
Kernkonfiguration
dbfilename Name der Konfigurationsdatei
speichern
Wie viele Operationen wurden in wie vielen Sekunden ausgeführt?
RDB auslösen
Speichern automatisch auslösen
Blockiert den Hauptprozess, bis die RDB-Persistenz abgeschlossen ist
Manuelles Speichern: bgsave
Redis führt Snapshot-Vorgänge asynchron im Hintergrund aus und der Snapshot kann auch auf Clientanforderungen reagieren.
Sie können den Zeitpunkt der letzten Snapshot-Ausführung über lastsave abrufen.
Der Hauptprozess wird nicht blockiert
Führen Sie den Befehl „flushall“ aus
Durch die Ausführung des Befehls „flushall“ wird auch die Datei „dump.rdb“ generiert, diese ist jedoch leer und bedeutungslos.
Der Befehl „flushdb“ generiert keine Datei „dump.rdb“.
Beenden Sie Redis normal
Weitere Konfigurationen in redis.conf
stop-writes-on-bgsave-error
Wenn Redis nicht auf die Festplatte schreiben kann, schalten Sie den Schreibvorgang von Redis direkt aus. Empfehlenswert ja
rdbcompression komprimierte Dateien
Wenn Sie keine CPU für die Komprimierung beanspruchen möchten, können Sie diese Funktion deaktivieren. Empfehlenswert ja.
rdbchecksum prüft die Integrität
Nach dem Speichern des Snapshots können Sie Redis auch bitten, den CRC64-Algorithmus zur Datenüberprüfung zu verwenden.
Persistenzprozess (Speicher-Snapshot)
Redis erstellt (fork) einen separaten untergeordneten Prozess für die Persistenz. Er schreibt die Daten zunächst in eine temporäre Datei. Nach Abschluss des Persistenzprozesses wird diese temporäre Datei verwendet, um die letzte persistente Datei zu ersetzen. Während des gesamten Prozesses führt der Hauptprozess keine E/A-Vorgänge aus, was eine extrem hohe Leistung gewährleistet. Wenn eine Datenwiederherstellung in großem Maßstab erforderlich ist und die Integrität der Datenwiederherstellung nicht sehr empfindlich ist, ist die RDB-Methode effizienter als die AOF-Methode . von hoher Effizienz. Der Nachteil von RDB besteht darin, dass Daten nach der letzten Persistenz verloren gehen können
Die Funktion von Fork besteht darin, einen Prozess zu kopieren, der mit dem aktuellen Prozess identisch ist. Alle Daten (Variablen, Umgebungsvariablen, Programmzähler usw.) des neuen Prozesses haben die gleichen Werte wie der ursprüngliche Prozess, es handelt sich jedoch um einen völlig neuen Prozess und dient als untergeordneter Prozess des ursprünglichen Prozesses.
Vorteil
Geeignet für die Wiederherstellung großer Datenmengen
Eher geeignet für Datenintegritäts- und Konsistenzanforderungen, die nicht hoch sind
Sparen Sie Speicherplatz
Schnelle Erholung
Nachteile
Möglicherweise gehen alle Änderungen des letzten Snapshots verloren
AOF
einführen
Zeichnen Sie jeden Schreibvorgang in Form eines Protokolls auf. Dateien können nur angehängt, aber nicht neu geschrieben werden.
Standardmäßig nicht aktiviert
Anhang Nr
Wenn AOF und RDB gleichzeitig aktiviert sind, erhält AOF Priorität.
Persistenzprozess
Der vom Client angeforderte Schreibbefehl wird an den AOF-Puffer angehängt.
Der AOF-Puffer synchronisiert Vorgänge mit der AOF-Datei auf der Festplatte gemäß der AOF-Persistenzrichtlinie.
Wenn die AOF-Datei die Umschreiberichtlinie überschreitet oder manuell neu geschrieben wird, wird die AOF-Datei neu geschrieben, um die AOF-Dateikapazität zu komprimieren.
Wenn der Redis-Server neu startet, lädt er die Schreibvorgänge in die AOF-Datei.
Einstellung der Synchronisierungsfrequenz
appendfsync immer
Immer synchronisiert, wird jeder Redis-Schreibvorgang sofort im Protokoll aufgezeichnet; die Leistung ist schlecht, aber die Datenintegrität ist besser
appendfsync jede Sekunde
Synchronisieren Sie jede Sekunde, schreiben Sie zuerst das Protokoll in den Speicherpuffer der AOF-Datei und dann jede Sekunde den Inhalt des Puffers auf die Festplatte. Wenn es zu einer Ausfallzeit kommt, können die Daten dieser Sekunde verloren gehen.
appendfsync Nr
Redis führt keine aktive Synchronisierung durch und überlässt den Zeitpunkt der Synchronisierung dem Betriebssystem.
Vorteil
Der Sicherungsmechanismus ist robuster und Daten gehen nicht so leicht verloren
Lesbare Protokolldateien zur Behandlung von Fehlervorgängen
Nachteile
Benötigt mehr Speicherplatz als RDB
Langsame Erholung
Wenn Lesen und Schreiben jedes Mal synchronisiert werden, gerät die Leistung unter Druck.
Es gibt einige Fehler, die eine Wiederherstellung unmöglich machen.
Die Redis-Strategie zum Löschen von Schlüsseln ist abgelaufen
Redis verwendet eine Kombination aus regulären Lösch- und Lazy-Deletion-Strategien.
Regelmäßiges Löschen: Von Zeit zu Zeit werden Schlüssel mit einer Ablaufzeit zufällig ausgewählt, auf ihr Ablaufdatum überprüft und nach Ablauf gelöscht.
Wiederholen Sie den Vorgang alle 1 Sekunde zehnmal und wählen Sie zufällig 20 Schlüssel aus, um zu prüfen, ob sie abgelaufen sind. Wenn 25 % der Schlüssel abgelaufen sind, wiederholen Sie dieses Verhalten
Viele abgelaufene Schlüssel werden übersehen
Verzögertes Löschen: Wenn die Daten ablaufen, werden sie nicht zuerst verarbeitet. Wenn auf den abgelaufenen Schlüssel zugegriffen wird, wird er gelöscht.
Tauschen Sie Raum gegen Zeit
Wenn viele abgelaufene Schlüssel fehlen und nicht überprüft werden, wird kein verzögertes Löschen durchgeführt. Eine große Anzahl abgelaufener Schlüssel sammelt sich im Speicher an, was dazu führt, dass der Redis-Speicher erschöpft ist. Zu diesem Zeitpunkt wird der Speichereliminierungsmechanismus verwendet.
Master-Slave-Replikation
was ist
Nachdem die Hostdaten aktualisiert wurden, werden die Daten gemäß der Richtlinie automatisch mit dem Master/Slave-Mechanismus synchronisiert. Der Master ist für das Schreiben und der Slave für das Lesen verantwortlich.
Was kannst du tun
Lese- und Schreibtrennung, Leistungserweiterung
Disaster Recovery und schnelle Wiederherstellung zur Verbesserung der Verfügbarkeit
Spielanleitung
Starten Sie mehrere Redis-Dienste
Slave-Bibliothek konfigurieren
Slave des IP-Ports ausführen
Master-Slave-Informationen abfragen
Informationsreplikation
Häufige Situationen
Ein Herr und zwei Diener
Kann die Slave-Maschine schreiben? Kann man das einstellen?
Es kann weder geschrieben noch gesetzt werden.
Was passiert, nachdem der Host heruntergefahren wurde? Befindet sich der Slave in der oberen Position oder im Standby?
Die Slave-Maschine ist im Standby-Modus
Kann der Slave ihn nach der Rückkehr des Masters und dem Hinzufügen eines neuen Datensatzes noch reibungslos kopieren?
Kann
Was passiert, wenn eine der Slave-Maschinen ausfällt? Kann es mit der großen Armee, so wie sie ist, mithalten?
Kann
Übergabe der Fackel
Können Maschinen mit der doppelten Identität von Master und Slave Daten schreiben? ?
Nein, solange Sie die Identität des Slaves haben, können Sie keine Daten schreiben.
Hauptsächlich kundenfeindlich
Wenn der Master-Computer ausgefallen ist, können Sie den Slave-Computer manuell zum Master-Computer machen.
Kopierprinzip
Nachdem der Slave gestartet ist und erfolgreich eine Verbindung zum Master hergestellt hat, sendet er einen Synchronisierungsbefehl.
Der Master empfängt den Befehl zum Starten des Hintergrundspeichervorgangs und sammelt alle empfangenen Befehle zum Ändern des Datensatzes. Nach Abschluss des Hintergrundvorgangs überträgt der Master die gesamte RDB-Datendatei an den Slave, um eine vollständige Synchronisierung durchzuführen.
Vollständige Kopie: Nach dem Empfang der Datenbankdateidaten speichert der Slave-Dienst diese und lädt sie in den Speicher.
Inkrementelle Replikation: Der Master leitet weiterhin alle neu gesammelten Änderungsbefehle an den Slave weiter, um die Synchronisierung abzuschließen
Solange der Master jedoch wieder verbunden ist, wird automatisch eine vollständige Synchronisierung (vollständige Replikation) durchgeführt
Sentry-Modus
Sentinel ist ein Redi-Prozess, der im Feature-Modus ausgeführt wird und drei Hauptaufgaben hat:
Monitor
Senden Sie PING-Befehle an alle Master-Slave-Bibliotheken, um zu überprüfen, ob sie aktiv sind. Wenn sie nicht innerhalb der angegebenen Zeit antworten, werden sie als offline eingestuft.
Subjektiv offline
Wenn der Sentinel feststellt, dass die Antwort der Master- oder Slave-Bibliothek auf den PING-Befehl eine Zeitüberschreitung aufweist, markiert der aktuelle Sentinel dies zunächst Für „subjektiv offline“.
Ziel offline
Wenn N/2 1 Sentinels die Hauptdatenbank als subjektiv offline markieren, wird die Hauptdatenbank als „objektiv offline“ markiert.
Erst wenn die Hauptdatenbank als objektiv offline markiert ist, wählt Sentinel eine neue Hauptdatenbank aus.
Wenn nur ein Sentinel vorhanden ist und die Hauptdatenbank aus Netzwerkgründen oder übermäßigem Druck ausgesetzt ist, reagiert die Hauptdatenbank nicht rechtzeitig auf den Sentinel und wird vom Sentinel als subjektiv offline markiert. Zu diesem Zeitpunkt gibt es nur einen Sentinel , und eine neue Hauptdatenbank wird direkt ausgewählt. In einem Cluster müssen mehr als N/2 1 Sentinels die Hauptdatenbank als subjektiv offline markieren wird als objektiv offline markiert, und dann wählen die Wächter eine neue Hauptdatenbank, um Fehleinschätzungen zu reduzieren.
Wählen Sie den Meister
Wenn die Master-Bibliothek ausfällt, wird eine neue Master-Bibliothek vom Slave-Computer ausgewählt.
Der Prozess der Auswahl einer neuen Masterdatenbank
Filter
Aus dem aktuellen Online-Status der Bibliothek muss auch der bisherige Netzwerkverbindungsstatus ermittelt werden.
Punktzahl
Priorität der Slave-Bibliothek
Kopieren Sie den Fortschritt aus der Bibliothek
ID-Nummer der Slave-Bibliothek
benachrichtigen
Senden Sie die Informationen der neuen Master-Bibliothek an andere Slave-Bibliotheken, lassen Sie andere Slave-Bibliotheken Verbindungen mit der neuen Master-Bibliothek herstellen und führen Sie die Datenreplikation durch.
was ist
Die kundenorientierte automatische Version kann im Hintergrund überwachen, ob der Host fehlerhaft ist. Bei einem Ausfall wechselt er automatisch basierend auf der Anzahl der Stimmen von der Slave-Datenbank zur Hauptdatenbank.
Spielanleitung
Erstellen Sie eine neue Datei sentinel.conf. Der Name darf nicht falsch sein
Konfigurieren Sie Sentinel und geben Sie den Inhalt ein
Sentinel-Monitor Mymaster 127.0.0.1 6379 1
Unter diesen ist mymaster der Servername des Überwachungsobjekts und 1 die Mindestanzahl der Sentinels, die der Migration zustimmen.
Starten Sie Sentinel
/usr/local/bin
Führen Sie redis-sentinel /myredis/sentinel.conf aus
Wenn der Master auflegt, wird aus den Slaves ein neuer Master ausgewählt.
Wahlregeln
Priorität
Standard in redis.conf: Replikatpriorität 100, je kleiner der Wert, desto höher die Priorität.
Versatz
Der Offset bezieht sich auf die vollständigsten Daten, die vom ursprünglichen Host erhalten wurden.
runid
Nach dem Start jeder Redis-Instanz wird zufällig eine 40-stellige Runid generiert (über den Infoserver abrufen und anzeigen).
Cluster
Was ist ein Cluster?
Horizontale Erweiterung von Redis
Wenn einige Knoten im Cluster ausfallen oder nicht kommunizieren können, kann der Cluster weiterhin Befehlsanfragen verarbeiten.
Wenn der Master-Computer ausfällt, wird der Slave-Computer automatisch zum Master befördert.
Aufbau
Änderung der Redis-Clusterkonfiguration
Cluster-fähig Ja aktiviert den Cluster-Modus
Cluster-Konfigurationsdatei nodes-6379.conf legt den Namen der Knotenkonfigurationsdatei fest
Cluster-Node-Timeout 15000 legt die Knoten-Trennzeit fest. Nach dieser Zeit (Millisekunden) wechselt der Cluster automatisch zwischen Master und Slave.
Start-up
redis-cli --cluster create --cluster-replicas 1 192.168.11.101:6379 192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389 192.168.11.101:6390. 19 2 .168.11.101:6391
Verwenden Sie nicht 127.0.0.1, sondern eine echte IP-Adresse
Was sind Slots?
Ein Redis-Cluster enthält 16384 Hash-Slots und jeder Schlüssel in der Datenbank gehört zu einem dieser 16384 Slots.
Für Schlüsselwerte, die sich nicht im selben Steckplatz befinden, können Mehrschlüsseloperationen wie mget und mset nicht verwendet werden.
Nachteile des Clusterings
Die Mehrtastenbedienung wird nicht unterstützt
Redis-Transaktionen mit mehreren Schlüsseln werden nicht unterstützt. Lua-Skripte werden nicht unterstützt
Komplexer
Warum ein Cluster mindestens drei Knoten benötigt
Wenn ein Knoten ausgefallen ist und mehr als die Hälfte der Knoten aufgrund des Ping-Pong-Abstimmungsmechanismus davon ausgehen, dass er ausgefallen ist, ist der Cluster ausgefallen. Wenn nur zwei Knoten vorhanden sind und ein Knoten ausgefallen ist, stimmt der andere Knoten ab. Nur 50 %, aber bei der Hälfte davon wird dieser Cluster nicht ausfallen, sodass mindestens drei Knoten erforderlich sind
Warum ein Cluster mindestens sechs Server benötigt
Da ein Cluster mindestens drei Knoten erfordert und jeder Knoten eine Backup-Maschine benötigt, sind für einen Cluster mindestens sechs Server erforderlich.
JAVA-Verbindungsentwicklung Jedis
Abhängigkeiten: <artifactId>jedis</artifactId>
JedisPool-Verbindungspool
setBlockWhenExhausted
/Ob blockiert werden soll, wenn die Verbindung erschöpft ist, false meldet eine Ausnahme, true blockiert bis zum Timeout, der Standardwert ist true
setTestOnBorrow
Überprüfen Sie, ob die Verbindung beim Abrufen aus dem Verbindungspool deaktiviert ist
Automatische Verkabelung von JedisPool-Objekten
Fünf Hauptdatentypen
Anwendung
Grundlegende Verwendung
Installationsanleitung
redis-benchmark: ein Leistungstesttool, das auf Ihrem eigenen Notebook ausgeführt werden kann, um die Leistung Ihres Notebooks zu überprüfen.
redis-check-aof: Reparieren Sie problematische AOF-Dateien. RDB und AOF werden später besprochen
redis-check-dump: Problematische Datei dump.rdb beheben
redis-sentinel: Wird vom Redis-Cluster verwendet
redis-server: Redis-Server-Startbefehl
redis-cli: Client, Operationseingang
Konfigurationsdatei redis.conf
Beginnen Sie im Hintergrund
Nein zu Ja verteufeln
Starten Sie den Server redis-server /myredis/redis.conf
Verwenden Sie den Client, um auf redis-cli zuzugreifen
-p gibt den Port an
-c Clustermodus
Netzwerkbezogene Konfiguration
binden
Kein Schreiben bedeutet unbegrenzten Zugriff auf alle IP-Adressen.
Geschützter Modus. Geschützter Modus
Standardmäßig aktiviert. Auch wenn der Zugriff von allen IP-Adressen akzeptiert wird, kann der Zugriff nicht erfolgreich sein.
Port-Portnummer
Standard 6379
TCP-Backlog-Verbindungswarteschlange
Timeout-Timeout-Zeit
Wie lange dauert es, bis ein inaktiver Client geschlossen wird? 0 schaltet diese Funktion aus, d. h. die Verbindung wird nie getrennt.
TCP-Keepalive-Heartbeat-Erkennung von Clients
Bei der Einstellung 0 wird keine Keepalive-Erkennung durchgeführt.
Gemeinsame Konfiguration
Daemonize-Daemon-Thread
Die Standardeinstellung „Nein“ ist „Ja“. Hierbei handelt es sich um einen Daemon-Prozess, der im Hintergrund gestartet werden kann.
pidfile Der Speicherort, an dem die PID-Datei gespeichert ist
Protokollebene Protokollebene
debug: druckt und generiert eine große Menge an Informationen, die für die Entwicklungs-/Testphase geeignet sind
ausführlich: Enthält viele weniger nützliche Informationen, ist aber nicht so verwirrend wie die Debug-Ebene
Hinweis: Mäßig ausführlich, geeignet für Produktionsumgebungen
Warnung: Erfassen Sie nur sehr wichtige und kritische Warnmeldungen
Protokolldatei Name der Protokolldatei
Der Standardwert ist Protokolldatei stdout
Datenbanken legt die Anzahl der Datenbanken fest
Die Standardanzahl der Datenbanken beträgt 16 und die standardmäßig ausgewählte Datenbank ist 0
Grenze
maxclients maximale Anzahl von Serververbindungen
Der Standardwert ist 1W-Verbindungen. Wenn die Obergrenze erreicht ist, wird die Verbindung abgelehnt.
maxmemory
Es wird empfohlen, dies festzulegen, da sonst der Speicher voll ist und der Server abstürzt.
maxmemory-policy Richtlinie zur Speicherbeseitigung
volatile-lru: Verwenden Sie den LRU-Algorithmus, um Schlüssel zu entfernen, nur Schlüssel mit festgelegter Ablaufzeit (zuletzt verwendet).
volatile-ttl: Entfernen Sie die Schlüssel mit dem kleinsten TTL-Wert, also die Schlüssel, die vor Kurzem ablaufen
volatile-random: Entfernen Sie zufällige Schlüssel aus dem abgelaufenen Satz, nur Schlüssel mit einer festgelegten Ablaufzeit
allkeys-lru: Verwenden Sie unter allen festgelegten Schlüsseln den LRU-Algorithmus, um den Schlüssel zu entfernen
allkeys-random: Zufallsschlüssel aus allen festgelegten Schlüsseln entfernen
Noeviction: Keine Entfernung. Bei Schreibvorgängen werden nur Fehlerinformationen zurückgegeben
IO-Limit
io-threads-do-reads Ob E/A-Multithreading aktiviert werden soll
Der Standardwert ist „Nein“. Wenn aktiviert, ändern Sie ihn in „Ja“.
io-threads Anzahl der IO-Threads
Es wird empfohlen, 2 oder 3 Threads für eine 4-Kern-Maschine und 6 Threads für eine 8-Kern-Maschine festzulegen. Die Anzahl der Threads muss geringer sein als die Anzahl der Maschinenkerne und sollte 8 nicht überschreiten.
Redis ist geschlossen
Herunterfahren einer einzelnen Instanz
Herunterfahren von redis-cli
Herunterfahren mehrerer Instanzen
redis-cli -p 6379 Herunterfahren
Single-Thread-Multiplexing mit mehreren E/A
Redis6.0 führt Multithreading ein
NoSQL-Datenbank
Was ist eine NoSQL-Datenbank?
Entspricht nicht den SQL-Standards
Unterstützt ACID nicht
Atomizität
Konsistenz
Isolierung
Beharrlichkeit
Übertrifft die Leistung von SQL bei weitem
Anwendbare Szene
Hochgradig gleichzeitiges Lesen und Schreiben von Daten
Riesige Datenmengen lesen und schreiben
Hochskalierbar für Daten
Nicht verwendetes Szenario
Benötigen Sie Transaktionsunterstützung
Erfordert eine strukturierte Abfragespeicherung, die Verarbeitung komplexer Beziehungen und Ad-hoc-Abfragen
Ad-hoc-Abfrage: Benutzer können Abfragebedingungen flexibel entsprechend ihren eigenen Anforderungen auswählen, und das System generiert entsprechende statistische Berichte basierend auf der Auswahl des Benutzers.
Redis fünf Hauptdatentypen
String-Typ
Zunahme
set <key><value>Schlüssel-Wert-Paar hinzufügen
setex <Schlüssel><Ablaufzeit><Wert> Legen Sie beim Festlegen des Schlüsselwerts die Ablaufzeit in Sekunden fest.
setnx <key><value>Legen Sie den Wert des Schlüssels nur fest, wenn der Schlüssel nicht vorhanden ist
mset <key1><value1><key2><value2>Legen Sie ein oder mehrere Schlüssel-Wert-Paare gleichzeitig fest
überprüfen
get <key> Fragen Sie den entsprechenden Schlüsselwert ab
strlen <key> ruft die Länge des Werts ab
mget <key1><key2><key3> Ruft einen oder mehrere Werte gleichzeitig ab
getrange <Schlüssel><Startposition><Endposition> Ruft den Wertebereich ab, ähnlich dem Teilstring in Java, vorderes Paket, hinteres Paket
ändern
incr <Schlüssel>
Erhöhen Sie den im Schlüssel gespeicherten numerischen Wert um 1
Kann nur mit numerischen Werten arbeiten. Wenn es leer ist, ist der neue Wert 1.
decr <Schlüssel>
Dekrementieren Sie den im Schlüssel gespeicherten numerischen Wert um 1
Kann nur mit numerischen Werten arbeiten. Wenn es leer ist, ist der neue Wert -1
incrby / decrby <key><step>erhöht oder verringert den im Schlüssel gespeicherten numerischen Wert. Benutzerdefinierte Schrittgröße.
löschen
Entf-Taste
besonders
append <key><value> hängt den angegebenen <value> an das Ende des ursprünglichen Werts an
getset <Schlüssel><Wert>
Altes durch neues ersetzen, neuen Wert festlegen und gleichzeitig alten Wert erhalten
Die Produktnummer und die Bestellnummer werden anhand der aufsteigenden Nummernmerkmale der Zeichenfolge generiert.
Listentyp
Zunahme
lpush/rpush <key><value1><value2><value3> .... Fügen Sie einen oder mehrere Werte von links/rechts ein.
überprüfen
lrange <key><start><stop>
Elemente gemäß Indexindex abrufen (von links nach rechts)
lindex <key><index>Elemente gemäß Indexindex abrufen (von links nach rechts)
llen <key> ruft die Listenlänge ab
ändern
lset<key><index><value> ersetzt den Wert, dessen Index im Listenschlüssel index ist, durch value
löschen
lrem <key><n><value>Löschen Sie n Elemente gleich dem Wert von links (von links nach rechts).
besonders
lpop/rpop <key>Gibt einen Wert von links/rechts aus. Der Wert ist im Schlüssel, und der Wert ist im Schlüssel.
rpoplpush <key1> <key2> spuckt einen Wert von der rechten Seite der <key1>-Liste aus und fügt ihn in die linke Seite der <key2>-Liste ein.
linsert <key> before <value><newvalue>Insert <newvalue> after <value>, um den Wert einzufügen
Wie Freundesliste, Fanliste, Nachrichtenwarteschlange, Rangliste der neuesten Nachrichten usw. Die rpush-Methode entspricht dem Einreihen der Nachricht in die Warteschlange, und lpop/rpop entspricht dem Entnehmen der Nachricht aus der Warteschlange zum Verarbeiten.
Hash-Typ
Zunahme
hset <key><field><value> weist <value> dem <field>-Schlüssel in der <key>-Sammlung zu
hmset <key1><field1><value1><field2><value2>... Hash-Werte stapelweise festlegen
überprüfen
hget <key1><field> ruft den Wert aus der <key1>-Sammlung <field> ab
hmget <key1><field1> <field2>... Hash-Werte stapelweise abrufen
hlen <key> ruft die Anzahl der Feldwerte im Hash ab
hexists<key1><field>Überprüfen Sie, ob das angegebene Feld field im Hash-Tabellenschlüssel vorhanden ist
ändern
hincrby <Schlüssel><Feld><Inkrement> fügt ein Inkrement zum Wert des Feldes Feld im Hash-Tabellenschlüssel hinzu (negativ bedeutet Subtraktion)
hsetnx <Schlüssel><Feld><Wert> setzt den Wert von Feld Feld im Hash-Tabellenschlüssel genau dann auf Wert, wenn Feld Feld nicht vorhanden ist
löschen
hdel <key><field> löscht das angegebene <field> in der <key>-Sammlung
besonders
hgetall <key> ruft alle Felder und Werte ab
hkeys <key> listet alle Felder des Hash-Sets auf
hvals <key> listet alle Werte des Hash-Sets auf
Verwenden Sie ein Objekt, um Benutzerinformationen, Produktinformationen, Bestellinformationen usw. zu speichern.
ZSet-Typ
Zunahme
zadd <key><score1><member 1><score2><member 2>…
Fügen Sie dem geordneten Satzschlüssel ein oder mehrere Mitgliedselemente und deren Bewertungswerte hinzu
überprüfen
zcard<key> gibt die Anzahl der Elemente in der geordneten Menge zurück
zcount <key><min><max> zählt die Menge, also die Anzahl der Elemente im Score-Intervall
zrange <key><start><stop> [WITHSCORES] Von klein nach groß sortieren
Gibt die Elemente im geordneten Satzschlüssel zurück, deren Indizes zwischen <start><stop> liegen
Mit WITHSCORES können die Scores und Werte an die Ergebnismenge zurückgegeben werden.
zrevrange <key><start><stop> [WITHSCORES] Von groß nach klein sortieren
zrangebyscore Schlüssel min max [withscores] [Offsetanzahl begrenzen]
Gibt alle Mitglieder des sortierten Mengenschlüssels zurück, deren Bewertungswert zwischen Min und Max liegt (einschließlich gleich Min oder Max). Die Mitglieder der geordneten Menge sind in der Reihenfolge steigender Punktewerte (von klein nach groß) angeordnet.
zrevrangebyscore key max min [withscores] [offset count begrenzen] (beachten Sie, dass der Parameter size ist)
Wie oben, jedoch vom größten zum kleinsten sortiert.
zrank <key><member> gibt den Rang des Mitglieds im geordneten Satzschlüssel zurück. Die Mitglieder der geordneten Menge sind in der Reihenfolge steigender Punktewerte (von klein nach groß) angeordnet. Die Rangfolge basiert auf 0, d. h. das Mitglied mit dem kleinsten Punktewert erhält den Rang 0.
zrevrank <key><member> Ruft die Rangfolge der Mitglieder in absteigender Reihenfolge des Punktewerts ab (von groß nach klein).
ändern
Zincrby <key><increment><member > fügt der Punktzahl des Elements ein Inkrement hinzu
löschen
zrem <key><member>Löschen Sie das Element mit dem angegebenen Wert in der Sammlung
besonders
Ranking: Beispielsweise muss eine Video-Website die von Benutzern hochgeladenen Videos bewerten.
Typ festlegen
Zunahme
sadd <Schlüssel><Wert1><Wert2> .....
Fügen Sie dem Sammlungsschlüssel ein oder mehrere Mitgliedselemente hinzu. Vorhandene Mitgliedselemente werden ignoriert.
überprüfen
smembers <key> entnimmt alle Werte der Sammlung
scard<key> gibt die Anzahl der Elemente in der Sammlung zurück
ismember<key> <value> Fragt ab, ob der Wert in der Sammlung bereits vorhanden ist
ändern
löschen
srem <key><value1><value2> .... Ein Element in der Sammlung löschen
besonders
spop <key> spuckt einen zufälligen Wert aus der Sammlung aus
smove <Quelle><Ziel>Wert verschiebt einen Wert in der Sammlung von einer Sammlung in eine andere
sinter <key1><key2> gibt das Schnittelement zweier Mengen zurück.
sunion <key1><key2> gibt die Vereinigungselemente zweier Mengen zurück.
sdiff <key1><key2> gibt die Differenzelemente der beiden Mengen zurück (die in key1, mit Ausnahme derjenigen in key2)
Abstimmungsergebnis Gemeinsame Freunde, gemeinsame Interessen, Klassifizierungs-Tags