Fortgeschrittene Schlüsselverwaltung in Redis

RedisBeginner
Jetzt üben

Einführung

In diesem Lab erkunden Sie fortgeschrittene Techniken zur Schlüsselverwaltung in Redis. Sie beginnen damit, wie Sie Schlüssel mit dem Befehl RENAME umbenennen. Dazu verbinden Sie sich über redis-cli mit dem Redis-Server, legen ein Schlüssel-Wert-Paar an, benennen es um und überprüfen die Änderung.

Anschließend entdecken Sie, wie Sie Schlüssel mit dem Befehl MOVE zwischen verschiedenen Redis-Datenbanken verschieben. Das Lab führt Sie durch den Prozess der Übertragung eines Schlüssels von einer Datenbank in eine andere innerhalb derselben Redis-Instanz. Zudem behandeln wir das Setzen und Abrufen mehrerer Schlüssel sowie die effiziente Iteration über Schlüsselbestände.

Umbenennen eines Schlüssels mit RENAME

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, etwa um Tippfehler zu korrigieren, Daten neu zu organisieren oder Schlüsselnamen an Änderungen in Ihrer Anwendung anzupassen.

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

redis-cli

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

Legen wir nun ein Schlüssel-Wert-Paar an, 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 erhalten.

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 mit dem Befehl RENAME in newkey um:

RENAME mykey newkey

Sie sollten die Ausgabe OK erhalten.

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

GET mykey

Sie sollten die Ausgabe (nil) erhalten, 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 den Schlüssel newkey für die nächsten Schritte wieder in mykey um:

RENAME newkey mykey

Sie sollten die Ausgabe OK erhalten.

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

GET mykey

Sie sollten die Ausgabe "myvalue" sehen.

Beenden Sie redis-cli, indem Sie exit eingeben oder Ctrl+D drücken.

exit

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

Verschieben eines Schlüssels zwischen Datenbanken mit MOVE

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, die von 0 bis 15 nummeriert sind. Der Befehl MOVE ermöglicht es Ihnen, einen Schlüssel von der aktuell ausgewählten Datenbank in eine andere zu übertragen.

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 127.0.0.1:6379> sehen. Standardmäßig sind Sie mit Datenbank 0 verbunden.

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

GET mykey

Sie sollten die Ausgabe "myvalue" sehen.

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

MOVE mykey 1

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

Um zu verifizieren, dass der Schlüssel verschoben wurde, versuchen Sie, den Wert von mykey in Datenbank 0 abzurufen:

GET mykey

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

Wechseln Sie nun mit dem Befehl SELECT zu Datenbank 1:

SELECT 1

Sie sollten die Ausgabe OK erhalten.

Versuchen Sie nun, den Wert von mykey in Datenbank 1 abzurufen:

GET mykey

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

Verschieben wir den Schlüssel mykey für die nächsten Schritte wieder zurück nach Datenbank 0. Wechseln Sie zuerst zurück zu Datenbank 0:

SELECT 0

Sie sollten die Ausgabe OK erhalten.

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

MOVE mykey 0

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

Dieser Fehler tritt auf, weil Sie SELECT 0 ausgeführt haben und dann in derselben Sitzung MOVE mykey 0 aufrufen. Der Befehl MOVE darf einen Schlüssel nicht in dieselbe Datenbank verschieben, in der er sich bereits 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 zum Beispiel zuerst Datenbank 1 aus:

SELECT 1

Sie sollten die Ausgabe OK erhalten.

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

MOVE mykey 0

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

Wechseln Sie nun zurück zu Datenbank 0:

SELECT 0

Überprüfen Sie, ob der Schlüssel wieder in Datenbank 0 vorhanden ist:

GET mykey

Sie sollten die Ausgabe "myvalue" sehen.

Beenden Sie redis-cli, indem Sie exit eingeben oder Ctrl+D drücken.

exit

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

Setzen mehrerer Schlüssel mit MSET

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 die Anzahl der Roundtrips zum Redis-Server reduziert wird.

Stellen Sie sicher, dass Sie mit dem Redis-Server verbunden sind. Falls nicht, öffnen Sie ein Terminal in Ihrem Verzeichnis ~/project und geben Sie den folgenden Befehl ein:

redis-cli

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

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

MSET key1 value1 key2 value2

Sie sollten die Ausgabe OK erhalten, 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 erhalten.

Ü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.

Beenden Sie redis-cli, indem Sie exit eingeben oder Ctrl+D drücken.

exit

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

Abrufen mehrerer Schlüssel mit MGET

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 die Anzahl der Roundtrips zum Redis-Server reduziert wird.

Stellen Sie sicher, dass Sie 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 127.0.0.1:6379> sehen.

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 MGET-Befehl 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 als (nil) angezeigt wird.

Beenden Sie redis-cli, indem Sie exit eingeben oder Ctrl+D drücken.

exit

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

Effizientes Iterieren über Schlüssel mit SCAN

In diesem Schritt lernen Sie, wie Sie mit dem Befehl SCAN effizient über Schlüssel in Redis iterieren. Im Gegensatz zum Befehl KEYS, der den Server bei großen Datenbanken blockieren kann, ist SCAN ein cursorbasierter Iterator, der Schlüssel in Batches abruft und so die Auswirkungen auf die Performance minimiert.

Stellen Sie sicher, dass Sie 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 127.0.0.1:6379> sehen.

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

  • mykey
  • key1
  • key2
  • key3
  • key4

Der Befehl SCAN erfordert einen initialen Cursor-Wert, der normalerweise 0 ist. Er gibt einen neuen Cursor-Wert für die nächste Iteration sowie eine Liste der in der aktuellen Iteration gefundenen Schlüssel zurück.

Starten wir die Iteration mit einem Cursor von 0:

SCAN 0

Sie sollten eine Ausgabe ähnlich dieser 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 der in dieser Iteration gefundenen Schlüssel. 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 Ausgabe ähnlich dieser 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 sehen, dass nur die Schlüssel zurückgegeben werden, die unserem Muster "key*" entsprechen (ohne "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 mehr oder weniger Elemente zurückgeben kann. Zum Beispiel:

SCAN 0 COUNT 3

Sie sollten eine Ausgabe ähnlich dieser sehen:

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

In diesem Fall erhalten wir einen neuen Cursor-Wert von "6", was darauf hinweist, dass noch weitere Schlüssel zu scannen sind. Sie würden die Iteration mit diesem neuen Cursor-Wert fortsetzen, bis Sie einen Cursor von "0" erhalten.

Beenden Sie redis-cli, indem Sie exit eingeben oder Ctrl+D drücken.

exit

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

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie fortgeschrittene Operationen zur Schlüsselverwaltung in Redis durchführen. Insbesondere haben Sie den Befehl RENAME verwendet, um einen Schlüssel umzubenennen und seinen Bezeichner zu ändern, während der zugehörige Wert erhalten blieb. Sie haben zudem geübt, die erfolgreiche Umbenennung zu verifizieren, indem Sie den Wert sowohl unter dem alten als auch unter dem neuen Schlüsselnamen abgerufen haben. Abschließend haben Sie den Schlüssel für die weiteren Schritte wieder in seinen ursprünglichen Namen zurückbenannt.

Das Lab führte zudem das Konzept der Redis-Datenbanken und den Befehl MOVE ein, mit dem Sie Schlüssel zwischen diesen logischen Datenbanken innerhalb einer einzigen Redis-Instanz übertragen können. Sie haben gelernt, wie Sie mit dem Befehl MSET effizient mehrere Schlüssel gleichzeitig setzen und mit dem Befehl MGET deren Werte abrufen. Schließlich haben Sie den Befehl SCAN erkundet, ein leistungsstarkes Werkzeug, um in großen Datenbanken über Schlüssel zu iterieren, ohne den Server zu blockieren.