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.


