Grundlegende Datenverwaltung in Redis

RedisBeginner
Jetzt üben

Einführung

In diesem Lab werden Sie grundlegende Techniken des Datenmanagements in Redis erkunden. Sie beginnen damit, zu lernen, wie man numerische Werte mit den atomaren Befehlen INCR und DECR inkrementiert und dekrementiert, was sich für Zähler und Rate Limiters (Ratenbegrenzer) eignet. Sie verbinden sich mit dem Redis-Server über redis-cli, setzen Anfangswerte und inkrementieren und dekrementieren diese dann, wobei Sie die Ergebnisse mit dem Befehl GET überprüfen.

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, die in Redis gespeichert sind, mit den Befehlen INCR und DECR inkrementieren und dekrementieren. Diese Befehle sind atomar, was bedeutet, dass ihre Ausführung garantiert ohne Beeinträchtigung durch andere Clients erfolgt, wodurch sie sich für Aufgaben wie Zähler und Rate Limiters (Ratenbegrenzer) eignen.

Zuerst verbinden wir uns mit dem Redis-Server über den Befehl redis-cli im Terminal:

redis-cli

Setzen wir nun einen Schlüssel namens mycounter auf einen Anfangswert von 10. 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. Inkrementieren wir mycounter:

INCR mycounter

Die Ausgabe ist der inkrementierte Wert:

(integer) 11

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

GET mycounter

Die Ausgabe sollte sein:

"11"

Der Befehl DECR dekrementiert den Wert eines Schlüssels um 1. Dekrementieren wir mycounter:

DECR mycounter

Die Ausgabe ist der dekrementierte Wert:

(integer) 10

Überprüfen Sie den Wert erneut mit GET:

GET mycounter

Die Ausgabe sollte sein:

"10"

Wenn ein Schlüssel nicht existiert, behandeln INCR und DECR ihn so, als ob er den Wert 0 enthält. Versuchen wir, einen nicht existierenden Schlüssel namens newcounter zu inkrementieren:

INCR newcounter

Die Ausgabe ist:

(integer) 1

Überprüfen Sie nun den Wert von newcounter:

GET newcounter

Die Ausgabe sollte sein:

"1"

In ähnlicher Weise wird das Dekrementieren eines nicht existierenden Schlüssels so behandelt, als ob er 0 ist, und ihn auf -1 dekrementiert.

DECR anothercounter

Die Ausgabe ist:

(integer) -1
GET anothercounter

Die Ausgabe sollte sein:

"-1"

Beenden Sie abschließend redis-cli:

exit

Es ist wichtig, redis-cli nach Abschluss der Befehle zu beenden, damit der Befehlsverlauf ordnungsgemäß 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. Während KEYS für die Entwicklung und das Debugging nützlich ist, wird es im Allgemeinen nicht für Produktionsumgebungen mit großen Datensätzen 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 noch ein paar 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 Muster entsprechen. Um beispielsweise alle Schlüssel abzurufen, die mit user: beginnen, verwenden Sie den folgenden Befehl:

KEYS user:*

Die Ausgabe ist:

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 den folgenden Befehl:

KEYS *counter*

Die Ausgabe ist:

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

Denken Sie daran, dass die Verwendung von KEYS * auf einer großen Datenbank die Leistung beeinträchtigen kann. Für Produktionsumgebungen sollten Sie stattdessen SCAN verwenden, das den Keyspace (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, Mengen (Sets), sortierte Mengen (Sorted Sets) und Hashes. Das Verständnis des Datentyps eines Schlüssels ist entscheidend für die Durchführung geeigneter Operationen darauf.

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 ihre Datentypen.

Überprüfen wir zunächst den Datentyp des Schlüssels mycounter:

TYPE mycounter

Die Ausgabe ist:

string

Dies deutet darauf hin, dass mycounter als String gespeichert ist, obwohl er einen numerischen Wert enthält. Redis konvertiert numerische Werte automatisch in Strings, wenn SET verwendet wird.

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

TYPE user:1000:name

Die Ausgabe ist:

string

Dies deutet auch darauf hin, dass user:1000:name als String gespeichert ist.

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

TYPE nonexistentkey

Die Ausgabe ist:

none

Dies deutet darauf hin, dass der Schlüssel nicht in der Datenbank vorhanden ist.

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 ist:

list

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

In ähnlicher Weise können Sie andere Datentypen wie Mengen (Sets), sortierte Mengen (Sorted Sets) und Hashes erstellen und den Befehl TYPE verwenden, um ihre Typen zu überprüfen. Zum Beispiel:

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

Die Ausgabe ist:

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

Die Ausgabe ist:

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

Die Ausgabe ist:

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 des Testens zurückzusetzen. Verwenden Sie diesen Befehl mit Vorsicht in Produktionsumgebungen, 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 (flushen), überprüfen wir, ob Schlüssel vorhanden sind. Verwenden Sie den Befehl KEYS *:

KEYS *

Sie sollten eine Liste von Schlüsseln sehen, die Sie in den vorherigen Schritten erstellt haben, z. B. mycounter, newcounter, user:1000:name und mylist.

Führen Sie nun den Befehl FLUSHDB aus:

FLUSHDB

Die Ausgabe ist:

OK

Dies deutet darauf hin, dass die Datenbank erfolgreich geleert wurde.

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

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 (Labor) jedoch nicht verwenden, um unbeabsichtigten Datenverlust zu vermeiden.

Beenden Sie abschließend redis-cli:

exit

Zusammenfassung

In diesem Lab (Labor) 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 (Counters) und Ratenbegrenzern (Rate Limiters) nützlich sind. Sie haben auch gelernt, dass diese Befehle einen Schlüssel so behandeln, als ob er den Wert 0 enthält, wenn er nicht existiert.

Darüber hinaus wurden Sie in den Befehl KEYS zum Abrufen aller in Redis gespeicherten Schlüssel eingeführt. Obwohl dies für die Entwicklung und das Debugging nützlich ist, wird es im Allgemeinen nicht für Produktionsumgebungen mit großen Datensätzen empfohlen. Abschließend haben Sie gelernt, wie Sie Datentypen überprüfen und die Datenbank leeren.