Heim >Datenbank >Redis >Ausführliche Erläuterung der Redis-Schlüsseldurchquerung und Datenbankverwaltung

Ausführliche Erläuterung der Redis-Schlüsseldurchquerung und Datenbankverwaltung

WBOY
WBOYnach vorne
2022-10-10 17:23:481611Durchsuche

Dieser Artikel bringt Ihnen relevantes Wissen über Redis, das hauptsächlich die relevanten Inhalte zu Traversal Keys und Datenbankverwaltung vorstellt. Ich hoffe, es wird für alle hilfreich sein.

Ausführliche Erläuterung der Redis-Schlüsseldurchquerung und Datenbankverwaltung

Empfohlenes Lernen: Redis-Video-Tutorial

1 Tasten durchqueren

1.1 Tasten vollständig durchqueren

Manchmal müssen wir alle Tasten vollständig durchqueren, dann müssen wir den Tastenmusterbefehl „And“ verwenden Dieser Befehl unterstützt den Mustervergleich

127.0.0.1:6379> mset name luke neme josh
OK

Wenn Sie alle Tasten durchlaufen möchten, können Sie die Befehlstasten *

127.0.0.1:6379> keys *
1) "name"
2) "neme"

Muster verwendet Platzhalter im Glob-Stil, wobei:

  • * ein beliebiges Zeichen darstellt

  • ? Stellt ein Zeichen dar

  • [] stellt einen übereinstimmenden Teil der Zeichen dar, zum Beispiel [a,b] stellt die Übereinstimmung zweier Zeichen a und b dar, [1-10] stellt die Übereinstimmung einer beliebigen Zahl von 1 bis 10 dar

  • x Stellt Escape dar. Wenn Sie mit dem *-Zeichen übereinstimmen müssen, müssen Sie Escape machen

Wir können die folgenden Vorgänge ausführen:

127.0.0.1:6379> keys n[a,e]me
1) "name"
2) "neme"

Sie können dies auch tun

127.0.0.1:6379> keys n?me
1) "name"
2) "neme"

Aber wenn die Redis eine große Anzahl von Schlüsseln enthält Datenbank, Schlüssel blockieren Redis.

Was sollen wir tun, wenn wir Schlüssel durchlaufen müssen?

Im Allgemeinen besteht unsere Produktionsumgebung aus mehreren Knoten. Dann können wir einen Redis-Slave-Knoten finden, der keine externen Dienste zum Durchlaufen der Daten bereitstellt. Wenn die Datenmenge jedoch groß ist, wird Redis dennoch blockiert, außer für den Slave-Knoten , es betrifft nur die Master- und Slave-Kopie.

Wenn Sie sicher sind, dass auf Redis nicht viele Schlüssel vorhanden sind, können Sie es direkt ausführen.

1.2 Progressive Durchquerung

Bei der progressiven Durchquerung wird jedes Mal ein Teil des Schlüssels durchlaufen, dann zurückgekehrt und beim nächsten Mal mit der Durchquerung der nachfolgenden Daten fortgefahren. Auf diese Weise können alle Daten übertragen werden, ohne den Redis-Dienst zu blockieren.

scan cursor [MATCH pattern] [COUNT count]

Die Parameter werden wie folgt erklärt:

  • cursor ist ein erforderlicher Parameter. Es handelt sich um einen Cursor, der angibt, wo die Durchquerung stattgefunden hat. Wenn 0 zurückgegeben wird, bedeutet dies Die Durchquerung ist abgeschlossen.

  • MATCH-Muster ist ein optionaler Parameter, der mit dem Tastenmuster identisch ist

  • COUNT-Zählung bedeutet das Durchlaufen mehrerer Schlüssel, der Standardwert ist 10, er kann entsprechend der tatsächlichen Situation erhöht werden

127.0.0.1:6379> mset a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 g 1 k 1 l 1 m 1 n 1 o 1 p 1 q 1 r 1 s 1 t 1 u 1 v 1 w 1 x 1 y 1 z 1
OK

Wir verwenden Scan Traversal, die erste Ausführung gibt Folgendes zurück:

127.0.0.1:6379> scan 0
1) "1"
2)  1) "l"
    2) "f"
    3) "k"
    4) "y"
    5) "c"
    6) "e"
    7) "w"
    8) "d"
    9) "b"
   10) "o"
   11) "q"

Das zweite Mal wird zum Durchlaufen mit der 1 verwendet, die beim ersten Mal zurückgegeben wurde, und es können 10 Schlüssel durchlaufen werden

127.0.0.1:6379> scan 1
1) "23"
2)  1) "v"
    2) "u"
    3) "z"
    4) "g"
    5) "n"
    6) "s"
    7) "i"
    8) "a"
    9) "r"
   10) "t"

Das dritte Mal wird zum Durchlaufen mit der 23 verwendet Wird beim zweiten Mal zurückgegeben. Wenn es 0 ist, bedeutet dies, dass die Durchquerung abgeschlossen ist. Es gibt auch hscan für den Hash-Typ, sscan für den Satztyp und zscan für den geordneten Satz. Die Verwendungsmethode ist die gleiche wie beim Scannen

2 Datenbankverwaltung

redis verfügt auch über mehrere Befehle für Datenbankoperationen: dbsize, select, Flushdb/Flushall

2.1 Datenbank wechseln, selectselect dbIndexdbIndex ist die entsprechende Datenbankseriennummer, es gibt 16 Datenbanken in Wählen Sie in der Standardkonfiguration von Redis aus, welche Nummer zur Datenbank gewechselt werden soll.

Legen Sie beispielsweise einen Schlüssel in der Standarddatenbank Nr. 0 fest

127.0.0.1:6379> scan 23
1) "0"
2) 1) "x"
   2) "h"
   3) "m"
   4) "p"

Dann wechseln wir zur Datenbank Nr. 1, um den Schlüssel zu erhalten, dieser kann jedoch nicht abgerufen werden, was darauf hinweist, dass die Datenbanken in einem Redis-Dienst nicht interoperabel sind.

127.0.0.1:6379> set name luke
OK

Kann es also als mehrere Redis verwendet werden? Natürlich nicht. Obwohl es mehr Bibliotheken gibt, handelt es sich bei Redis tatsächlich immer noch um eine CPU. Wenn ein Befehl in einer Datenbank sehr langsam ausgeführt wird, sind auch andere Bibliotheken betroffen Bibliotheken: Für Entwickler, die eine bestimmte Bibliothek verwenden, kann es schwierig sein, das Problem zu analysieren.

2.2 Flushall/FlushdbDer Unterschied zwischen Flushall und Flushdb besteht darin, dass Flushall alle Daten in allen Bibliotheken löscht, während Flushdb nur die aktuelle Datenbank löscht.

Das ist leicht zu verstehen, daher geben wir keine Beispiele. Es ist jedoch zu beachten, dass diese beiden Befehle alle Daten löschen und die Folgen einer Fehlbedienung katastrophal sein werden. Und wenn zu viele Schlüssel vorhanden sind, wird auch Redis blockiert, daher müssen Sie bei der Verwendung dieser beiden Befehle vorsichtig sein.

Empfohlenes Lernen:

Redis-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Redis-Schlüsseldurchquerung und Datenbankverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen