Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Schnell per Schlüssel lesen: Key-Value-Speicher

Nach dieser Lektion: Ich kann einen Key-Value-Speicher für die passende Aufgabe auswählen.

Lektion, 50 Min.11 BefehleValkey-Lab: einen Redis-kompatiblen Key-Value-Speicher mit Schlüsseln, Ablaufzeit, Listen und Zählern kennenlernen

Antworten im Handumdrehen

Der Webshop einer Buchhandlung muss bei jedem Klick wissen, wer angemeldet ist. Er soll auch die Besucher zählen und sich die letzten fünf Seiten jeder Person merken.

Eine klassische Datenbank kann das, wird aber langsam, wenn Tausende gleichzeitig klicken. Ein Key-Value-Speicher hält diese kleinen Fakten im Arbeitsspeicher und antwortet in Bruchteilen einer Millisekunde.

Am Ende dieser Lektion

Notiz

Ich kann einen Key-Value-Speicher für die passende Aufgabe auswählen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Key-Value-Speichereine Datenbank, die einen Wert unter einem Namen hält
Schlüsselder Name, unter dem man einen Wert wiederfindet (Key)sitzung:lea
Ablaufzeitder Zeitpunkt, an dem ein Schlüssel von selbst entfernt wird
Atomarin einem einzigen Schritt, der sich nicht teilen lässt
Listemehrere Werte in Reihenfolge unter einem Schlüssel
Hashbenannte Felder unter einem einzigen Schlüssel

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Key-Value-Speicher gleicht einem Dictionary

Ein Key-Value-Speicher hält einen Wert unter einem Schlüssel und gibt ihn zurück, wenn Sie den Schlüssel nennen. Er gleicht einem Python-Dictionary, liegt aber auf einem Server, den viele Programme teilen.

Valkey ist ein freier Speicher, der alles im Arbeitsspeicher hält. Sie schicken ihm Befehle wie SET oder GET. Jede Antwort beginnt mit einem Zeichen: + für eine kurze Antwort, $ für Text, : für eine Zahl und * für eine Liste von Antworten.

Beispiel: Antworten lesen

Sie sendenAntwortDas bedeutet
SET bestand:tasse 40+OKGespeichert
GET bestand:tasse$2, dann 40Ein Text der Länge 2, er lautet 40
INCR besuche:1Eine Zahl, der neue Wert
GET kein-schluessel$-1Es gibt nichts

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Einen kleinen Client namens v bauen

Befehl
v() ( printf '%s\r\n' "$*" | nc -w 1 valkey 6379 )

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Bestand an Tassen speichern

Befehl
v SET bestand:tasse 40

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ihn erneut abfragen

Befehl
v GET bestand:tasse

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Schlüssel kann von selbst ablaufen

Eine Anmeldesitzung soll nicht ewig dauern. Mit EX 60 lebt ein Schlüssel 60 Sekunden, dann entfernt ihn der Speicher. Sie schreiben keinen Aufräumcode.

TTL fragt, wie viele Sekunden noch bleiben. Ist der Schlüssel weg, antwortet GET mit $-1.

Eine Sitzung für eine Minute speichern

Befehl
v SET sitzung:lea token123 EX 60

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die verbleibende Zeit abfragen

Befehl
v TTL sitzung:lea

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Einen Schlüssel abfragen, den es nicht gibt

Befehl
v GET sitzung:fehlt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Wann hört ein Schlüssel auf zu existieren?

Code: python
# Ein Schlüssel mit Ablauf ist ein Wert und der Zeitpunkt, an dem er verschwindet.
eintrag = ["token123", 1060]
for jetzt in [1000, 1059, 1060, 1100]:
    if jetzt < eintrag[1]:
        print(jetzt, "noch da:", eintrag[0])
    else:
        print(jetzt, "abgelaufen")
# Ersetzen Sie 1060 durch 1090 und starten Sie erneut.

Zähler und Listen erledigen die Arbeit

INCR addiert 1 zu einer Zahl und liefert den neuen Wert. Das ist atomar: Tausend gleichzeitige Besucher werden alle gezählt. Getrenntes Lesen, Addieren und Schreiben könnte welche verlieren.

Eine Liste hält Werte in Reihenfolge unter einem Schlüssel. RPUSH hängt hinten an, LLEN liefert die Länge. Ein Hash hält benannte Felder, etwa ein Profil.

Besuche von Hand zählen

Code: python
# Seitenaufrufe in einem Dictionary zählen: lesen, addieren, schreiben.
besuche = {}
for seite in ["start", "warenkorb", "start", "start"]:
    if seite in besuche:
        besuche[seite] = besuche[seite] + 1
    else:
        besuche[seite] = 1
print(besuche)
# Ein Key-Value-Speicher macht dieses Addieren in einem Schritt: Mehrere Schreibende stören sich nicht.

Einen Besuch der Startseite zählen

Befehl
v INCR besuche:start

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Drei Seitenaufrufe von Lea notieren

Befehl
v RPUSH zuletzt:lea start warenkorb kasse

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Fragen, welche Art Wert gespeichert ist

Befehl
v TYPE zuletzt:lea

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zwei Felder von Leas Profil speichern

Befehl
v HSET kunde:lea name Lea stadt Leipzig

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Alle Felder wieder lesen

Befehl
v HGETALL kunde:lea

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, ein Key-Value-Speicher sei ein sicherer Ort für alle Daten. Der Arbeitsspeicher ist begrenzt, und ein Schlüssel kann ablaufen. Halten Sie den Stammsatz in einer Datenbank. Nutzen Sie den Speicher für schnelle, kurzlebige Fakten.

Weiterführend: fünf Versuche pro Minute

Eine Anmeldeseite erlaubt jeder Person fünf Versuche pro Minute. Bauen Sie diese Grenze aus INCR auf einem Schlüssel wie versuche:bo und aus EXPIRE versuche:bo 60, das einem vorhandenen Schlüssel eine Ablaufzeit gibt.

Führen Sie Ihre Befehle sechsmal aus. Notieren Sie die sechste Antwort und was die Seite damit tun soll.

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

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.