Grundlegende Datenverwaltung in Redis

RedisBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie grundlegende Techniken zur Datenverwaltung in Redis kennen. Zunächst erfahren Sie, wie Sie numerische Werte mithilfe der atomaren Befehle INCR und DECR erhöhen und verringern können – ideal für Zähler und Rate-Limiter. Sie verbinden sich über redis-cli mit dem Redis-Server, legen Anfangswerte fest, führen Inkrementierungen sowie Dekrementierungen durch und überprüfen die Ergebnisse mit dem Befehl GET.

Darüber hinaus lernen Sie, wie Sie alle in Redis gespeicherten Schlüssel mit dem Befehl KEYS abrufen können.

Werte mit INCR/DECR erhöhen und verringern

In diesem Schritt lernen Sie, wie Sie numerische Werte in Redis mit den Befehlen INCR und DECR erhöhen und verringern. Diese Befehle sind atomar, was bedeutet, dass ihre Ausführung garantiert nicht durch andere Clients unterbrochen wird. Dies macht sie perfekt für Aufgaben wie Zähler oder Ratenbegrenzungen.

Verbinden Sie sich zunächst über das Terminal mit dem Redis-Server:

redis-cli

Legen wir nun einen Schlüssel namens mycounter mit einem Anfangswert von 10 an. Dies erstellt ein Schlüssel-Wert-Paar in der Redis-Datenbank. Der Schlüssel ist mycounter und der Wert ist 10.

SET mycounter 10

Sie sollten die folgende Ausgabe sehen, die bestätigt, dass der Schlüssel erfolgreich gesetzt wurde:

OK

Der Befehl INCR erhöht den Wert eines Schlüssels um 1. Erhöhen wir mycounter:

INCR mycounter

Die Ausgabe zeigt den erhöhten Wert:

(integer) 11

Um den Wert zu überprüfen, können Sie den Befehl GET verwenden:

GET mycounter

Die Ausgabe sollte wie folgt lauten:

"11"

Der Befehl DECR verringert den Wert eines Schlüssels um 1. Verringern wir mycounter:

DECR mycounter

Die Ausgabe zeigt den verringerten Wert:

(integer) 10

Überprüfen Sie den Wert erneut mit GET:

GET mycounter

Die Ausgabe sollte wie folgt lauten:

"10"

Wenn ein Schlüssel nicht existiert, behandeln INCR und DECR ihn so, als enthielte er den Wert 0. Versuchen wir, einen nicht existierenden Schlüssel namens newcounter zu erhöhen:

INCR newcounter

Die Ausgabe lautet:

(integer) 1

Überprüfen Sie nun den Wert von newcounter:

GET newcounter

Die Ausgabe sollte wie folgt lauten:

"1"

Ebenso wird beim Verringern eines nicht existierenden Schlüssels dieser als 0 behandelt und auf -1 dekrementiert.

DECR anothercounter

Die Ausgabe lautet:

(integer) -1
GET anothercounter

Die Ausgabe sollte wie folgt lauten:

"-1"

Beenden Sie abschließend redis-cli:

exit

Es ist wichtig, redis-cli nach Abschluss der Befehle zu beenden, damit der Befehlsverlauf korrekt protokolliert wird.

Alle Schlüssel mit KEYS abrufen

In diesem Schritt lernen Sie, wie Sie alle in Redis gespeicherten Schlüssel mit dem Befehl KEYS abrufen. Obwohl KEYS für die Entwicklung und Fehlersuche nützlich ist, wird es für Produktionsumgebungen mit großen Datensätzen im Allgemeinen nicht empfohlen, da es den Server blockieren kann, während er alle Schlüssel durchläuft.

Verbinden Sie sich zunächst mit dem Redis-Server über redis-cli:

redis-cli

Im vorherigen Schritt haben Sie mehrere Schlüssel erstellt: mycounter, newcounter und anothercounter. Fügen wir ein paar weitere Schlüssel hinzu, um das Beispiel interessanter zu gestalten.

SET user:1000:name "John"
SET user:1000:age 30
SET user:1001:name "Jane"

Verwenden Sie nun den Befehl KEYS mit dem Muster *, um alle Schlüssel in der Datenbank abzurufen:

KEYS *

Die Ausgabe ist eine Liste aller Schlüssel:

1) "anothercounter"
2) "user:1000:age"
3) "user:1001:name"
4) "mycounter"
5) "newcounter"
6) "user:1000:name"

Die Reihenfolge der Schlüssel kann variieren.

Sie können auch Muster verwenden, um Schlüssel abzurufen, die einem bestimmten Schema entsprechen. Um beispielsweise alle Schlüssel abzurufen, die mit user: beginnen, verwenden Sie den folgenden Befehl:

KEYS user:*

Die Ausgabe lautet:

1) "user:1000:age"
2) "user:1001:name"
3) "user:1000:name"

Ein weiteres Beispiel: Um alle Schlüssel abzurufen, die counter enthalten, verwenden Sie diesen Befehl:

KEYS *counter*

Die Ausgabe lautet:

1) "anothercounter"
2) "mycounter"
3) "newcounter"

Denken Sie daran, dass die Verwendung von KEYS * in einer großen Datenbank die Leistung beeinträchtigen kann. Erwägen Sie für Produktionsumgebungen stattdessen die Verwendung von SCAN, das den Schlüsselraum auf nicht blockierende Weise durchläuft.

Beenden Sie abschließend redis-cli:

exit

Datentyp mit TYPE überprüfen

In diesem Schritt lernen Sie, wie Sie den Datentyp eines in Redis gespeicherten Schlüssels mit dem Befehl TYPE überprüfen. Redis unterstützt verschiedene Datentypen, darunter Strings, Listen, Sets, sortierte Sets und Hashes. Das Verständnis des Datentyps eines Schlüssels ist entscheidend, um die richtigen Operationen darauf auszuführen.

Verbinden Sie sich zunächst mit dem Redis-Server über redis-cli:

redis-cli

In den vorherigen Schritten haben Sie mehrere Schlüssel mit unterschiedlichen Werten erstellt. Überprüfen wir deren Datentypen.

Zuerst prüfen wir den Datentyp des Schlüssels mycounter:

TYPE mycounter

Die Ausgabe lautet:

string

Dies zeigt an, dass mycounter als String gespeichert ist, obwohl er einen numerischen Wert enthält. Redis konvertiert numerische Werte bei der Verwendung von SET automatisch in Strings.

Überprüfen wir als Nächstes den Datentyp des Schlüssels user:1000:name:

TYPE user:1000:name

Die Ausgabe lautet:

string

Dies zeigt ebenfalls an, dass user:1000:name als String gespeichert ist.

Überprüfen wir nun den Datentyp eines Schlüssels, der nicht existiert, wie z. B. nonexistentkey:

TYPE nonexistentkey

Die Ausgabe lautet:

none

Dies zeigt an, dass der Schlüssel nicht in der Datenbank existiert.

Um Datentypen weiter zu veranschaulichen, erstellen wir eine Liste:

LPUSH mylist "item1"
LPUSH mylist "item2"

Überprüfen Sie nun den Datentyp von mylist:

TYPE mylist

Die Ausgabe lautet:

list

Dies bestätigt, dass mylist als Liste gespeichert ist.

Ebenso können Sie andere Datentypen wie Sets, sortierte Sets und Hashes erstellen und den Befehl TYPE verwenden, um deren Typen zu verifizieren. Zum Beispiel:

SADD myset "member1"
SADD myset "member2"
TYPE myset

Die Ausgabe lautet:

set
ZADD mysortedset 1 "element1"
ZADD mysortedset 2 "element2"
TYPE mysortedset

Die Ausgabe lautet:

zset
HSET myhash field1 "value1"
HSET myhash field2 "value2"
TYPE myhash

Die Ausgabe lautet:

hash

Beenden Sie abschließend redis-cli:

exit

Daten mit FLUSHDB löschen

In diesem Schritt lernen Sie, wie Sie alle Daten aus der aktuell ausgewählten Redis-Datenbank mit dem Befehl FLUSHDB löschen. Dieser Befehl ist nützlich, um die Datenbank während der Entwicklung oder beim Testen zurückzusetzen. Verwenden Sie diesen Befehl in Produktionsumgebungen mit Vorsicht, da er alle Daten in der Datenbank dauerhaft löscht.

Verbinden Sie sich zunächst mit dem Redis-Server über redis-cli:

redis-cli

Bevor Sie die Datenbank leeren, stellen Sie sicher, dass Schlüssel vorhanden sind. Verwenden Sie den Befehl KEYS *:

KEYS *

Sie sollten eine Liste der Schlüssel sehen, die Sie in den vorherigen Schritten erstellt haben, wie mycounter, newcounter, user:1000:name und mylist.

Führen Sie nun den Befehl FLUSHDB aus:

FLUSHDB

Die Ausgabe lautet:

OK

Dies zeigt an, dass die Datenbank erfolgreich geleert wurde.

Um zu überprüfen, ob die Datenbank nun leer ist, verwenden Sie erneut den Befehl KEYS *:

KEYS *

Die Ausgabe ist eine leere Liste:

(empty array)

Dies bestätigt, dass alle Schlüssel aus der Datenbank entfernt wurden.

Es ist wichtig zu verstehen, dass FLUSHDB nur die aktuell ausgewählte Datenbank leert. Redis unterstützt mehrere Datenbanken (standardmäßig nummeriert von 0 bis 15). Wenn Sie alle Datenbanken leeren möchten, können Sie den Befehl FLUSHALL verwenden. Wir werden FLUSHALL in diesem Lab jedoch nicht verwenden, um unbeabsichtigten Datenverlust zu vermeiden.

Beenden Sie abschließend redis-cli:

exit

Zusammenfassung

In diesem Lab haben Sie grundlegende Techniken zur Datenverwaltung in Redis kennengelernt. Insbesondere haben Sie das Erhöhen und Verringern numerischer Werte mit den atomaren Befehlen INCR und DECR geübt, die für die Implementierung von Zählern und Ratenbegrenzungen nützlich sind. Sie haben auch gelernt, dass diese Befehle einen nicht existierenden Schlüssel so behandeln, als enthielte er den Wert 0.

Darüber hinaus wurden Sie mit dem Befehl KEYS zum Abrufen aller in Redis gespeicherten Schlüssel vertraut gemacht. Obwohl dieser für die Entwicklung und Fehlersuche nützlich ist, wird er für Produktionsumgebungen mit großen Datensätzen im Allgemeinen nicht empfohlen. Abschließend haben Sie gelernt, wie man Datentypen überprüft und die Datenbank leert.