Valkey-Lab: einen Redis-kompatiblen Key-Value-Speicher mit Schlüsseln, Ablaufzeit, Listen und Zählern kennenlernen

In diesem Lab erhält jede lernende Person einen eigenen Valkey-Server, an den sie Befehle schicken kann. Valkey ist ein Key-Value-Speicher: Er legt einen Wert unter einem Namen ab und gibt ihn zurück, wenn man danach fragt. Websites nutzen das für Sitzungen, Caches und Zähler. Valkey versteht dieselben Befehle wie Redis, deshalb lässt sich das hier Gelernte übertragen.

Es ist kein Angriffs-Lab. Keine Kopie hat eine Verbindung ins Internet oder zu anderen Lernenden, und es gibt keine Webseite, daher wird alles im danebenstehenden Terminal eingegeben.

Was die Lernenden lernen

Wie sich ein Key-Value-Speicher von einer Tabelle unterscheidet: SET und GET speichern und holen einen Wert über seinen Schlüssel, ein Schlüssel kann mit EX eine Lebensdauer erhalten und mit TTL heruntergezählt werden, und der Speicher bietet einige eigene Strukturen: eine Liste (RPUSH, LRANGE), einen Hash aus benannten Feldern (HSET, HGETALL) und einen Zähler (INCR), der auch dann exakt addiert, wenn viele Clients gleichzeitig anfragen. Außerdem lesen sie die Antworten des Speichers, das Protokoll namens RESP, und sehen, was erhalten bleibt, wenn das Lab gestoppt wird: Die Daten liegen im Arbeitsspeicher, und jeder Schreibvorgang wird in eine Datei in einem benannten Volume protokolliert, wodurch sie wiederkommen. Das Lab eignet sich als Einführung in Datenbanken und Datenspeicher oder in die Caches und Sitzungen der Webentwicklung.

Im Browser ausführen

Das Lab startet einen einzigen Dienst, valkey, und wartet, bis er antwortet. Im Terminal fehlt der übliche Valkey-Client valkey-cli. Stattdessen sendet die Lektion jeden Befehl mit nc, über eine einzeilige Funktion namens v, und die Antworten erscheinen genau so, wie sie ankommen: +OK für einen Erfolg, $5 und dann der Text für einen Wert mit fünf Byte, $-1 für einen Schlüssel, den es nicht gibt, und :3 für eine Zahl.

  1. Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
  2. Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie Valkey.
  3. Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
  4. Öffnen. Klicken Sie auf der Seite des Labs auf „Terminal öffnen“. Unter „In Ihrem Browser“ gibt es keinen Link, weil Valkey keine Webseite hat. Geben Sie nc valkey 6379 und dann SET greeting hello ein, drücken Sie die Eingabetaste, und der Speicher antwortet +OK. GET greeting antwortet $5 und dann hello. Die Lektion definiert die Funktion v, sodass v SET greeting hello dasselbe tut, ohne dass zuerst eine Verbindung aufgebaut werden muss.

Was Lernende abgeben sollen

Die Antworten einer kurzen eigenen Sitzung: ein Schlüssel mit Ablaufzeit und herunterzählendem TTL, eine Liste, ein Hash und ein Zähler. Dazu ein Satz, was die Ablaufzeit bewirkt hat, und einer dazu, was nach dem Stoppen und Starten des Labs noch vorhanden war, und warum. Der letzte zeigt, ob sie den Unterschied zwischen Daten im Arbeitsspeicher und einer Datei in einem Volume verstanden haben.

Eine Basics-Lektion zu diesem Lab

Valkey Basics ist eine kleine Lektion, die in diesem Lab durchgearbeitet wird. Darin legen Lernende die Funktion v an, speichern und holen einen Wert, geben einem Schlüssel fünf Sekunden Lebensdauer und sehen ihn verschwinden, und fügen einer Liste, einem Hash und einem Zähler etwas hinzu. Danach stoppen und starten sie das Lab, um zu sehen, was erhalten blieb.

Kostenlose persönliche Konten bekommen die Lektion im Modul Basics auf der Startseite, jede Einrichtung kann sie aus dem Basics-Ordner der Bibliothek kopieren, und eine neue Einrichtung beginnt mit ihr in einem Modul namens Lab Basics (Sample). Sie ist absichtlich klein: Sie zeigt Lehrkräften, was eine in einem Lab durchgearbeitete Lektion ist, und das Lab erledigt den Rest. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.

Der Code auf GitHub

Die Compose-Datei hat kein Dockerfile: Sie führt ein einziges öffentliches Standard-Image aus, valkey/valkey, auf eine Version festgelegt, als Benutzer ohne Sonderrechte mit 64 MB Arbeitsspeicher und einer Append-only-Datei in einem benannten Volume. Valkey steht unter der Lizenz BSD-3-Clause und wird nicht von uns verteilt. Es ist der Open-Source-Fork von Redis und wird hier anstelle von Redis 8 und höher verwendet, die eine andere Lizenz haben. Das Lab hat keinen Weg ins Internet und kein Passwort, da sonst nichts den Speicher erreichen kann; es ist ein einziger Dienst, daher gehören Funktionen, die einen zweiten Server brauchen, wie Replikation, nicht dazu.

Als Aufgabe stellen

Schreiben Sie in die Aufgabe, was abzugeben ist.

  1. Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-valkey mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten.
  2. Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
  3. Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
  4. Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.

Häufige Fragen

Ist das Redis?
Es ist Valkey, der Open-Source-Fork von Redis, und es versteht dieselben Befehle. Das Lab verwendet Valkey, weil es unter BSD-3-Clause lizenziert ist, was auf Redis 8 und höher nicht zutrifft.
Warum verwendet das Terminal nc und nicht valkey-cli?
Das Terminal des Labs enthält psql, mariadb, curl, git und nc, aber keinen Valkey-Client. Valkey nimmt einen Befehl als Zeile Klartext entgegen, daher kann nc ihn senden und die Antwort ausgeben. Auf Ihrem eigenen Rechner können Sie mit demselben Lab valkey-cli oder redis-cli verwenden.
Was ist nach dem Stoppen und Starten des Labs noch da?
Alles, was geschrieben wurde und nicht abgelaufen war. Der Speicher protokolliert jeden Schreibvorgang in einer Datei in einem benannten Volume, das die Plattform sichert, und baut daraus beim Start seinen Arbeitsspeicher wieder auf. Ein Schlüssel mit abgelaufener Lebensdauer bleibt verschwunden.