Redis: Erweiterte Schlüsselverwaltung

RedisRedisBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie fortgeschrittene Techniken des Schlüsselmanagements (key management) in Redis erkunden. Sie beginnen damit, das Umbenennen von Schlüsseln mit dem Befehl RENAME zu erlernen, indem Sie sich über redis-cli mit dem Redis-Server verbinden, ein Schlüssel-Wert-Paar (key-value pair) setzen und es dann umbenennen, wobei Sie die Änderung auf dem Weg dorthin überprüfen.

Als Nächstes werden Sie entdecken, wie Sie Schlüssel mit dem Befehl MOVE zwischen verschiedenen Redis-Datenbanken verschieben können. Das Lab führt Sie durch den Prozess der Übertragung eines Schlüssels von einer Datenbank in eine andere innerhalb der Redis-Instanz. Das Lab behandelt auch das Setzen und Abrufen mehrerer Schlüssel und das effiziente Iterieren von Schlüsseln.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/store_string("Set String Value") redis/RedisGroup -.-> redis/fetch_string("Get String Value") subgraph Lab Skills redis/access_cli -.-> lab-552094{{"Redis: Erweiterte Schlüsselverwaltung"}} redis/store_string -.-> lab-552094{{"Redis: Erweiterte Schlüsselverwaltung"}} redis/fetch_string -.-> lab-552094{{"Redis: Erweiterte Schlüsselverwaltung"}} end

Einen Schlüssel mit RENAME umbenennen

In diesem Schritt lernen Sie, wie Sie einen Schlüssel in Redis mit dem Befehl RENAME umbenennen. Das Umbenennen von Schlüsseln kann aus verschiedenen Gründen nützlich sein, z. B. zum Korrigieren von Tippfehlern, zum Reorganisieren Ihrer Daten oder zum Aktualisieren von Schlüsselnamen, um Änderungen in Ihrer Anwendung widerzuspiegeln.

Verbinden wir uns zunächst mit dem Redis-Server über die Redis-Befehlszeilenschnittstelle (redis-cli). Öffnen Sie ein Terminal in Ihrem Verzeichnis ~/project und geben Sie den folgenden Befehl ein:

redis-cli

Sie sollten die Redis-Eingabeaufforderung sehen: 127.0.0.1:6379>.

Lassen Sie uns nun ein Schlüssel-Wert-Paar (key-value pair) setzen, das wir umbenennen können. Verwenden Sie den Befehl SET, um einen Schlüssel namens mykey mit dem Wert myvalue zu erstellen:

SET mykey myvalue

Sie sollten die Ausgabe OK sehen.

Um zu überprüfen, ob der Schlüssel korrekt gesetzt wurde, verwenden Sie den Befehl GET:

GET mykey

Sie sollten die Ausgabe \"myvalue\" sehen.

Benennen wir nun den Schlüssel mykey in newkey um, indem wir den Befehl RENAME verwenden:

RENAME mykey newkey

Sie sollten die Ausgabe OK sehen.

Um zu überprüfen, ob der Schlüssel umbenannt wurde, versuchen Sie, den Wert des alten Schlüssels (mykey) abzurufen:

GET mykey

Sie sollten die Ausgabe (nil) sehen, was bedeutet, dass der Schlüssel nicht mehr existiert.

Versuchen Sie nun, den Wert des neuen Schlüssels (newkey) abzurufen:

GET newkey

Sie sollten die Ausgabe \"myvalue\" sehen, was bestätigt, dass der Schlüssel erfolgreich umbenannt wurde.

Benennen wir abschließend den Schlüssel newkey für die nächsten Schritte wieder in mykey um:

RENAME newkey mykey

Sie sollten die Ausgabe OK sehen.

Überprüfen Sie, ob der Schlüssel wieder umbenannt wurde:

GET mykey

Sie sollten die Ausgabe \"myvalue\" sehen.

Denken Sie daran, die redis-cli mit exit oder Strg+D zu beenden. Dies stellt sicher, dass Ihre Befehle ordnungsgemäß protokolliert werden.

exit

Sie haben nun erfolgreich einen Schlüssel in Redis mit dem Befehl RENAME umbenannt.

Einen Schlüssel mit MOVE zwischen Datenbanken verschieben

In diesem Schritt lernen Sie, wie Sie einen Schlüssel mit dem Befehl MOVE von einer Redis-Datenbank in eine andere verschieben. Redis unterstützt mehrere logische Datenbanken innerhalb einer einzigen Instanz. Standardmäßig gibt es 16 Datenbanken, nummeriert von 0 bis 15. Mit dem Befehl MOVE können Sie einen Schlüssel von der aktuell ausgewählten Datenbank in eine andere übertragen.

Stellen Sie zunächst sicher, dass Sie mit dem Redis-Server über die Redis-Befehlszeilenschnittstelle (redis-cli) verbunden sind. Öffnen Sie ein Terminal in Ihrem Verzeichnis ~/project und geben Sie den folgenden Befehl ein:

redis-cli

Sie sollten die Redis-Eingabeaufforderung sehen: 127.0.0.1:6379>. Standardmäßig sind Sie mit Datenbank 0 verbunden.

Wir haben bereits einen Schlüssel namens mykey mit dem Wert myvalue in Datenbank 0 aus dem vorherigen Schritt. Lassen Sie uns dies überprüfen:

GET mykey

Sie sollten die Ausgabe sehen: "myvalue".

Verschieben wir nun den Schlüssel mykey von Datenbank 0 in Datenbank 1 mit dem Befehl MOVE:

MOVE mykey 1

Sie sollten die Ausgabe sehen: (integer) 1, was bedeutet, dass der Schlüssel erfolgreich verschoben wurde.

Um zu überprüfen, ob der Schlüssel verschoben wurde, versuchen Sie, den Wert des Schlüssels mykey in Datenbank 0 abzurufen:

GET mykey

Sie sollten die Ausgabe sehen: (nil), was bedeutet, dass der Schlüssel nicht mehr in Datenbank 0 existiert.

Wechseln Sie nun mit dem Befehl SELECT zu Datenbank 1:

SELECT 1

Sie sollten die Ausgabe sehen: OK.

Versuchen Sie nun, den Wert des Schlüssels mykey in Datenbank 1 abzurufen:

GET mykey

Sie sollten die Ausgabe sehen: "myvalue", was bestätigt, dass der Schlüssel erfolgreich in Datenbank 1 verschoben wurde.

Verschieben wir abschließend den Schlüssel mykey für die nächsten Schritte zurück in Datenbank 0. Wechseln Sie zunächst zurück zu Datenbank 0:

SELECT 0

Sie sollten die Ausgabe sehen: OK.

Verschieben Sie nun den Schlüssel mykey von Datenbank 1 in Datenbank 0:

MOVE mykey 0

Sie sollten die Ausgabe sehen: (error) ERR source and destination objects are the same.

Dieser Fehler tritt auf, weil Sie SELECT 0 und dann MOVE mykey 0 in derselben Sitzung ausführen. Der Befehl MOVE darf einen Schlüssel nicht in dieselbe Datenbank verschieben, in der er sich gerade befindet.

Um einen Schlüssel in eine andere Datenbank zu verschieben, müssen Sie zuerst die Zieldatenbank auswählen und dann den Befehl MOVE verwenden.

Wählen Sie beispielsweise zuerst Datenbank 1 aus:

SELECT 1

Sie sollten die Ausgabe sehen: OK.

Verschieben Sie nun den Schlüssel mykey von Datenbank 1 in Datenbank 0:

MOVE mykey 0

Sie sollten die Ausgabe sehen: (integer) 1, was bedeutet, dass der Schlüssel erfolgreich verschoben wurde.

Wechseln Sie nun zurück zu Datenbank 0:

SELECT 0

Überprüfen Sie, ob sich der Schlüssel wieder in Datenbank 0 befindet:

GET mykey

Sie sollten die Ausgabe sehen: "myvalue".

Denken Sie daran, redis-cli mit exit zu beenden oder Strg+D zu drücken. Dies stellt sicher, dass Ihre Befehle ordnungsgemäß protokolliert werden.

exit

Sie haben nun erfolgreich einen Schlüssel mit dem Befehl MOVE zwischen Redis-Datenbanken verschoben.

Mehrere Schlüssel mit MSET setzen

In diesem Schritt lernen Sie, wie Sie mit dem Befehl MSET in Redis mehrere Schlüssel mit ihren entsprechenden Werten in einem einzigen Befehl setzen. Dies ist effizienter als die Verwendung mehrerer SET-Befehle, da es die Anzahl der Roundtrips zum Redis-Server reduziert.

Stellen Sie zunächst sicher, dass Sie über die Redis-Befehlszeilenschnittstelle (redis-cli) mit dem Redis-Server verbunden sind. Wenn Sie noch nicht verbunden sind, öffnen Sie ein Terminal in Ihrem Verzeichnis ~/project und geben Sie den folgenden Befehl ein:

redis-cli

Sie sollten die Redis-Eingabeaufforderung sehen: 127.0.0.1:6379>.

Wir haben bereits einen Schlüssel namens mykey mit dem Wert myvalue in Datenbank 0 aus den vorherigen Schritten. Setzen wir nun mit dem Befehl MSET zwei weitere Schlüssel, key1 und key2, mit den Werten value1 bzw. value2:

MSET key1 value1 key2 value2

Sie sollten die Ausgabe OK sehen, was bedeutet, dass die Schlüssel erfolgreich gesetzt wurden.

Um zu überprüfen, ob die Schlüssel korrekt gesetzt wurden, verwenden Sie den Befehl GET für jeden Schlüssel:

GET key1

Sie sollten die Ausgabe \"value1\" sehen.

GET key2

Sie sollten die Ausgabe \"value2\" sehen.

Setzen wir nun drei Schlüssel, einschließlich mykey, mit MSET:

MSET mykey newvalue key3 value3 key4 value4

Sie sollten die Ausgabe OK sehen.

Überprüfen Sie die Werte:

GET mykey

Sie sollten die Ausgabe \"newvalue\" sehen.

GET key3

Sie sollten die Ausgabe \"value3\" sehen.

GET key4

Sie sollten die Ausgabe \"value4\" sehen.

Denken Sie daran, die redis-cli mit exit oder Strg+D zu beenden. Dies stellt sicher, dass Ihre Befehle ordnungsgemäß protokolliert werden.

exit

Sie haben nun erfolgreich mehrere Schlüssel mit dem Befehl MSET gesetzt.

Mehrere Schlüssel mit MGET abrufen

In diesem Schritt lernen Sie, wie Sie die Werte mehrerer Schlüssel mit dem Befehl MGET in Redis in einem einzigen Befehl abrufen. Dies ist effizienter als die Verwendung mehrerer GET-Befehle, da es die Anzahl der Roundtrips zum Redis-Server reduziert.

Stellen Sie zunächst sicher, dass Sie über die Redis-Befehlszeilenschnittstelle (redis-cli) mit dem Redis-Server verbunden sind. Öffnen Sie ein Terminal in Ihrem Verzeichnis ~/project und geben Sie den folgenden Befehl ein:

redis-cli

Sie sollten die Redis-Eingabeaufforderung sehen: 127.0.0.1:6379>.

Aus dem vorherigen Schritt haben wir die folgenden Schlüssel und Werte:

  • mykey: newvalue
  • key1: value1
  • key2: value2
  • key3: value3
  • key4: value4

Rufen wir nun die Werte von key1, key2 und mykey mit dem Befehl MGET ab:

MGET key1 key2 mykey

Sie sollten die folgende Ausgabe sehen:

1) "value1"
2) "value2"
3) "newvalue"

Diese Ausgabe zeigt die Werte der Schlüssel in der Reihenfolge, in der sie im Befehl MGET angegeben wurden.

Rufen wir nun die Werte von key3, key4 und einem nicht existierenden Schlüssel key5 mit dem Befehl MGET ab:

MGET key3 key4 key5

Sie sollten die folgende Ausgabe sehen:

1) "value3"
2) "value4"
3) (nil)

Beachten Sie, dass der Wert für den nicht existierenden Schlüssel key5 (nil) ist.

Denken Sie daran, die redis-cli mit exit oder Strg+D zu beenden. Dies stellt sicher, dass Ihre Befehle ordnungsgemäß protokolliert werden.

exit

Sie haben nun erfolgreich mehrere Schlüssel mit dem Befehl MGET abgerufen.

Effizientes Iterieren von Schlüsseln mit SCAN

In diesem Schritt lernen Sie, wie Sie mit dem Befehl SCAN effizient durch Schlüssel in Redis iterieren können. Im Gegensatz zum Befehl KEYS, der den Server bei Verwendung auf großen Datenbanken blockieren kann, ist SCAN ein Cursor-basierter Iterator, der Schlüssel in Batches abruft und so die Auswirkungen auf die Leistung minimiert.

Stellen Sie zunächst sicher, dass Sie über die Redis-Befehlszeilenschnittstelle (redis-cli) mit dem Redis-Server verbunden sind. Öffnen Sie ein Terminal in Ihrem Verzeichnis ~/project und geben Sie den folgenden Befehl ein:

redis-cli

Sie sollten die Redis-Eingabeaufforderung sehen: 127.0.0.1:6379>.

Aus den vorherigen Schritten haben wir die folgenden Schlüssel:

  • mykey
  • key1
  • key2
  • key3
  • key4

Der Befehl SCAN benötigt einen anfänglichen Cursor-Wert, der typischerweise 0 ist. Er gibt einen neuen Cursor-Wert für die nächste Iteration und eine Liste der in der aktuellen Iteration gefundenen Schlüssel zurück.

Beginnen wir die Iteration mit einem Cursor von 0:

SCAN 0

Sie sollten eine ähnliche Ausgabe wie diese sehen:

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"
   5) "mykey"

Das erste Element in der Ausgabe ("0") ist der Cursor-Wert. Das zweite Element ist ein Array von Schlüsseln, die in dieser Iteration gefunden wurden. Da der zurückgegebene Cursor 0 ist, bedeutet dies, dass die Iteration abgeschlossen ist und wir alle Schlüssel in einem einzigen Scan abgerufen haben.

Sie können auch die Option MATCH verwenden, um Schlüssel basierend auf einem Muster zu filtern. Um beispielsweise alle Schlüssel zu finden, die mit key beginnen, verwenden Sie den folgenden Befehl:

SCAN 0 MATCH key*

Sie sollten eine ähnliche Ausgabe wie diese sehen:

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"

Der Cursor ist "0", was bedeutet, dass die Iteration abgeschlossen ist, und wir können sehen, dass nur die Schlüssel, die unserem Muster "key*" entsprechen, zurückgegeben werden (mit Ausnahme von "mykey").

Sie können auch die Option COUNT verwenden, um Redis einen Hinweis auf die Anzahl der Elemente zu geben, die Sie in einem einzigen Aufruf abrufen möchten. Beachten Sie, dass dies nur ein Hinweis ist und Redis möglicherweise mehr oder weniger Elemente zurückgibt. Zum Beispiel:

SCAN 0 COUNT 3

Sie sollten eine ähnliche Ausgabe wie diese sehen:

1) "6"
2) 1) "key2"
   2) "key3"
   3) "key4"

In diesem Fall erhalten wir einen neuen Cursor-Wert von "6", der angibt, dass es weitere Schlüssel zu scannen gibt. Sie würden die Iteration mit diesem neuen Cursor-Wert fortsetzen, bis Sie einen Cursor von "0" erhalten.

Denken Sie daran, redis-cli mit exit oder durch Drücken von Ctrl+D zu beenden. Dies stellt sicher, dass Ihre Befehle ordnungsgemäß protokolliert werden.

exit

Sie haben nun erfolgreich Schlüssel in Redis mit dem Befehl SCAN iteriert.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie erweiterte Schlüsselverwaltungsoperationen in Redis durchführen. Insbesondere haben Sie den Befehl RENAME verwendet, um einen Schlüssel umzubenennen, wodurch sein Bezeichner geändert wurde, während sein zugehöriger Wert beibehalten wurde. Sie haben auch geübt, die erfolgreiche Umbenennung zu überprüfen, indem Sie den Wert sowohl mit dem alten als auch mit dem neuen Schlüsselnamen abgerufen haben, um die Existenz und den Wert des Schlüssels nach der Operation zu bestätigen. Schließlich haben Sie den Schlüssel für die nachfolgenden Schritte wieder in seinen ursprünglichen Namen umbenannt.

Das Lab führte auch das Konzept der Redis-Datenbanken und den Befehl MOVE ein, mit dem Sie Schlüssel zwischen diesen logischen Datenbanken innerhalb einer einzelnen Redis-Instanz übertragen können. Sie haben gelernt, wie Sie den Befehl MSET verwenden, um mehrere Schlüssel gleichzeitig effizient zu setzen, und den Befehl MGET, um ihre Werte abzurufen. Abschließend haben Sie den Befehl SCAN untersucht, ein leistungsstarkes Werkzeug zum Iterieren durch Schlüssel in großen Datenbanken, ohne den Server zu blockieren. Denken Sie daran, die redis-cli nach jedem Schritt zu beenden, um sicherzustellen, dass Ihre Befehle zur Überprüfung protokolliert werden.