Valkey: Übung

Dokumentiere die eingegebenen Befehle und deren Ausgaben! Verwende das Präfix > für Befehlszeilen, um diese von den Ausgaben unterscheidbar zu machen.

Bearbeite die folgenden Übungen auf deiner Cloud-VM. Valkey ist bereits vorinstalliert.

Übung 0: Mit Valkey verbinden

Bei dieser Übung brauchst du nichts zu dokumentieren.

Verbinde dich mittels valkey-cli mit der Datenbank:

$ valkey-cli
127.0.0.1:6379>

Es sollte nun die Eingabeaufforderung 127.0.0.1:6379> erscheinen.

Setzen den Befehl PING ab, der PONG zurückgeben sollte:

127.0.0.1:6379> PING
PONG

Hilfe zu einem Befehl bekommst du mit dem HELP-Befehl:

> HELP PING

  PING [message]
  summary: Ping the server
  …

Mit [Ctrl]-[D] oder [Ctrl]-[C] kannst du die Sitzung beenden.

Achte bei der Befehlseingabe darauf, ob die Valkey-Eingabeaufforderung > oder die System-Shell $ aktiv ist!

Übung 1: Steckbrief abspeichern

Verwenden den SET-Befehl, um deinen persönlichen Steckbrief abzuspeichern. Speichere folgende Angaben ab:

  • Vorname
  • Nachname
  • Alter (in ganzen Jahren)
  • Wohnort
  • Lieblingsessen

Überlege dir vorher eine geeignete Namensstruktur für die Schlüssel.

Verwende anschliessend den MSET-Befehl, um den persönlichen Steckbrief einer weiteren Person, die du kennst, in einem einzigen Befehl abzuspeichern.

Erhöhe anschliessend mit dem INCR-Befehl das Alter beider Personen um ein Jahr.

Verwende den KEYS-Befehl, um alle Schlüssel anzuzeigen. Gib anschliessend alle Werte mithilfe des GET-Befehls aus.

Übung 2: TODO-Liste

Erstelle eine TODO-Liste mithilfe des LPUSH-Befehls. Definiere mindestens drei Aufgaben, die du erledigen musst. Falls die Aufgaben Leerzeichen enthalten, umschliesse den Text mit Anführungs- und Schlusszeichen ("…").

Gib nun die komplette Liste mithilfe des LRANGE-Befehls aus. Tipp: Der Index ist 0-basierend, und -1 bezeichnet das letzte Listenelement.

Angenommen, du hättest nun eine dieser TODO-Aufgaben erledigt: Entferne dieses Element mithilfe des LREM-Befehls aus der Liste. Erstelle nun eine zweite Liste mit erledigten Aufgaben, und füge die erledigte Aufgabe dieser neuen Liste hinzu.

Verschiebe eine weitere erledigte Aufgabe mit dem RPOPLPUSH-Befehl von der einen in die andere Liste. Gib anschliessend beide Listen noch einmal aus.

Übung 3: Mengenoperationen

Erstelle ein Set (d.h. eine Menge) mithilfe des SADD-Befehls mit dem Namen mammals (Säugetiere) und den folgenden Einträgen:

  • Mensch
  • Fledermaus
  • Pferd
  • Gorilla
  • Meerschweinchen
  • Kuh

Erstelle ein weiteres Set mit dem Namen fourlegged (Vierbeiner) und den folgenden Einträgen:

  • Pferd
  • Krokodil
  • Meerschweinchen
  • Kuh
  • Eidechse
  • Leguan

Verwende die Befehle SINTER, SUNION und SDIFF, um die folgenden Mengen zu erstellen:

  1. Säugetiere, die nicht vier Beine haben
  2. Vierbeiner, die keine Säugetiere sind
  3. Vierbeinige Säugetiere
  4. Tiere, die vier Beine haben und/oder Säugetiere sind

Übung 4: Endpunkte als Hashes abspeichern

Betrachte Sie die Datei config.csv, die sich auf deiner VM im Home-Verzeichnis (/home/user) befinden sollte.

m346,https://m346.frickelbude.ch/,GET,200,5m0s,3
duckdb,https://duckdb.org/,GET,200,2m30s,3
valkey,https://libvirt.org/,GET,200,1m0s,5

Diese enthält folgende Spalten:

  • Name (z.B. m346)
  • URL (z.B. https://m346.frickelbude.ch/)
  • HTTP-Methode (z.B. GET)
  • HTTP-Status (z.B. 200)
  • Frequenz (z.B. 2m30s)
  • Versuche (z.B. 3)

Hierbei handelt es sich um die Konfiguration zu einem Monitoring-System, womit eine URL periodisch mithilfe von HTTP auf ihre Erreichbarkeit überprüft wird.

Erstelle pro Zeile der Datei config.csv einen Hash, der alle Angaben aus dieser Datei enthält. Verwende hierzu den HSET-Befehl. Verwende Schlüssel der Form endpoint:[identifier], also z.B. endpoint:m346.

Stoppe nun die Valkey-Sitzung mit [Ctrl]-[D]. Exportiere nun all deine Endpoints als JSON-Dateien (endpoint-[identifier].json), indem du den Valkey-Client mit dem Parameter --json und dem Aufruf des HGETALL kombinierst:

$ valkey-cli --json HGETALL endpoint:… > endpoint-[identifier].json

Zusatzübung A: Weitere Befehle kennenlernen

Recherchiere selbständig zu den folgenden Valkey-Befehlen und überlegen dir, wozu diese sinnvoll sind. Die Befehle sind in Gruppen aufgelistet, weil sie zusammenarbeiten. Mache konkrete Anwendungsbeispiele und dokumentieren diese.

  1. SELECT, MOVE, FLUSHDB
  2. EXPIRE, EXPIREAT, SETEX, TTL, PERSIST
  3. MULTI, EXEC, DISCARD
  4. BRPOP, BLPOP, LPUSH, RPUSH

Zusatzübung B: Passwort vergeben

Finde heraus, wie man in der Konfigurationsdatei /etc/valkey/valkey.conf ein Passwort definiert. Bearbeiten die Datei dazu mit einem Texteditor wie z.B. nano:

sudo nano /etc/valkey/valkey.conf

Tipp: Suchen nach der Einstellung requirepass!

Setze ein Passwort, und starte Valkey neu:

sudo systemctl restart valkey.service

Anschliessend funktioniert Valkey nicht mehr ohne Authentifizierung:

$ valkey-cli
127.0.0.1:6379> PING
(error) NOAUTH Authentication required.

Finde drei Wege um dich zu authentifizieren:

  1. mit einem interaktiven Valkey-Befehl
  2. mit einem Kommandozeilenparameter
  3. mit einer Umgebungsvariable

Teste die Authentifizierung jeweils mit dem PING-Befehl.

Tipp: Verwenden Sie valkey-cli --help für Hilfestellungen.

Dokumentiere alle Schritte.