staging.inyokaproject.org

Valkey

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

valkey_logo.webp Valkey 🇬🇧 ist eine „Key-Value Store“ Datenbank (oder kurz nur KV Store), ins Deutsche übersetzt Schlüssel-Werte-Datenbank. Hier werden die Daten immer in Form von Schlüssel-Werte-Paaren gespeichert. Man kann sich die Datenbank vereinfacht so vorstellen, dass darin nur eine Tabelle mit zwei Spalten existiert, nämlich einer Spalte für den Schlüssel und einer für den Wert.

Valkey kennt verschiedene Datentypen und kann entweder allein stehend oder als Cluster betrieben werden. Bei Valkey sind, wie bei anderen KV Stores auch, Schlüssel „alles“ und Werte „nichts“. D.h. alle Abfragen beziehen sich immer auf einen Schlüssel und liefern einen Wert zurück. Abfrage zu Werten wie „Zeige mir den Schlüssel zum Wert foobar“ gibt es nicht. Valkey ist im Vergleich zu anderen Datenbanksystemen, wie z.B. SQL-Datenbanken sehr schnell. Eine lokale Installation auf einem halbwegs aktuellen Laptop schafft in der Standardkonfiguration ca. 100.000 Abfragen pro Sekunde. Daher wird Valkey auch gerne als Caching Server und Messaging Queue genutzt.

Valkey wird unter der Obhut der Linux Foundation entwickelt. Das Projekt entstand als Fork von Redis 🇬🇧, nachdem das Redis Projekt von einer Open Source Lizenz auf eine restriktivere „source available“ Lizenz gewechselt ist 🇬🇧. Der Fork wurde auf Basis von Redis 7.2.4 vollzogen. Seitdem wird Valkey eigenständig weiter entwickelt.

Installation

aus den Paketquellen

Valkey ist ab Ubuntu 24.04 in den Paketquellen enthalten[1]:

  • valkey (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install valkey 

Bei der Installation wird, sofern man das eigene System nicht umkonfiguriert hat, das Paket ruby-redis als empfohlene Abhängigkeit mit installiert. Wer nicht von Ruby aus auf Valkey zugreifen möchte, sollte bei der Paketinstallation die Option --no-install-recommends mit angeben.

Bei der Installation wird auch die systemd Service Unit valkey-server.service angelegt und aktiviert. Über diese wird der Valkey Server beim Booten gestartet.

manuelle Installation

Hinweis!

Fremdsoftware kann das System gefährden.

Wer die aktuelle, stabile Version von Valkey nutzen oder mit einer anderen Konfiguration selbst kompilieren möchte, der geht wie folgt vor: Als erstes lädt man sich die aktuelle Version von der Downloadseite des Projekts 🇬🇧 herunter. Die Datei entpackt man dann[3], z.B. in das eigene Homeverzeichnis

Hinweis:

Es wird im folgenden davon ausgegangen, dass Valkey nach /home/BENUTZER/valkey-8.1.1 entpackt worden ist.

Man wechselt ins Verzeichnis valkey-8.1.1 und startet das Kompilieren[2]:

make  

Nach dem Durchlauf des Compilers ist Valkey einsatzbereit, allerdings nicht systemweit installiert. Zum Testen oder lokalen Einsatz ist dies aber auch nicht notwendig. Zum manuellen Starten von Valkey wechselt man in das Verzeichnis scr und startet dort den Valkey-Server manuell:

./valkey-server 

Hier man auch die interaktive Kommandozeile manuell starten:

./valkey-cli 

Möchte man Valkey systemweit installieren, ist noch der folgende Befehl auszuführen[4][5]:

sudo make install 

Der Server sowie die Hilfsprogramme wie valkey-cli etc. werden dann nach /usr/local/bin installiert.

Zu beachten ist, dass bei der manuellen Installation weder eine systemd Service Unit noch eine Konfigurationsdatei angelegt wird. Eine Vorlage für eine passende Service Unit Datei ist im Unterverzeichnis utils zu finden. Die Vorlage für die Konfigurationsdatei valkey.conf ist auf der oberen Ebenen im entpackten Verzeichnis zu finden.

Weitere, ausführliche Hinweise zum Kompilieren findet man in der Datei README.md, die man auf der oberen Ebenen im entpackten Verzeichnis findet.

Benutzung

Im folgenden wird eine kurze Übersicht über die grundlegende Nutzung und die verschiedenen Möglichkeiten von Valkey gegeben. Eine vollständige Übersicht zu allen Themen und Möglichkeiten ist in der ausführlichen Dokumentation 🇬🇧 zu finden.

Für das kurze Praxisbeispiel im Abschnitt Valkey Kommandozeile wird davon ausgegangen, dass ein Valkey Server auf dem Rechner lokal läuft.

Datentypen

Valkey kennt zehn verschiedene Datentypen, die in der folgenden Tabelle kurz erklärt werden. Ausführliche Information findet man in der Valkey Dokumentation zu Datentypen 🇬🇧.

Datentyp Beschreibung
String Eine beliebige Zeichenfolge (z.B. Text)
List Entspricht einem Array, die Elemente (= Strings) werden über einen positiven, ganzzahligen, null-basierten Index angesprochen (d.h. das erste Element der Liste hat den Index 0, das zweite 1 usw.).
Hash Entspricht einem assoziativem Array, die Elemente bestehen hier wiederum aus Schlüssel-Werten Paaren.
Set Entspricht „List", außer dass – im Gegensatz zu List – Elemente nur genau einmal vorkommen dürfen.
Sorted Set Entspricht einem Set, nur dass zusätzlich der Index des Elements explizit mit angegeben wird.
Stream Streams in Redis sind eine Art Datenstrom in Form eines Logs, an den nur Daten angehangen werden können. D.h. bestehende Daten können nicht geändert oder gelöscht werden.
Geospatial Index Varianten des Sortes Sets, bei dem Geodaten in der Form LATITUDE, LONGITUDE, ORT angegeben werden. LATITUDE und LONGITUDE müssen in Dezimalgrad angegeben werden. Damit ist es z.B. möglich Abstände zwischen zwei Orten zu berechnen oder eine Umkreissuche durchzuführen.
Bitmap Eine spezielle Version des Datentyps „String“, bei dem nur Nullen und Einsen (Bits) gespeichert werden
Bitfield Dienen zum Speichern von Integer Werten, die Werte als binäre Strings gespeichert. Zugriffe erfolgen durch atomare Operationen, wodurch sich Bitfields sehr gut für Zähler nutzen lassen.
HyperLogLog probabilistische Datenstruktur, mit der sich die Kardinalität einer Datenmenge sehr speichereffizient bestimmen lässt

Valkey Kommandozeile

Mit dem Befehl[4]

valkey-cli 

startet man eine interaktive Kommandozeile zur Interaktion mit der Datenbank. Gibt man keine weiteren Parameter beim Aufruf an, wird als IP-Adresse des Servers 127.0.0.1 (localhost) und Port 6379 (der Default-Port von Valkey) angenommen, sowie die Datenbank mit dem Index 0 genutzt.

Im folgenden ein Beispiel zur Interaktion mit der Datenbank:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
127.0.0.1:6379> set greeting "Hallo Wetl!"
OK
127.0.0.1:6379> get greeting
"Hallo Wetl!"
127.0.0.1:6379> LPUSH listExample "focal" "jammy" "noble"
(integer) 3
127.0.0.1:6379> LLEN listExample
(integer) 3
127.0.0.1:6379> LPUSH listExample "bionic"
(integer) 4
127.0.0.1:6379> LRANGE listExample 0 -1
1) "bionic"
2) "noble"
3) "jammy"
4) "focal"
127.0.0.1:6379> HSET releases "jammy" "22.04" "noble" "24.04"
(integer) 2
127.0.0.1:6379> HGETALL releases
1) "jammy"
2) "22.04"
3) "noble"
4) "24.04"
127.0.0.1:6379> HGET releases jammy
"22.04"
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> SET greeting "Hallo Ubuntu"
OK
127.0.0.1:6379[1]> GET greeting
"Hallo Ubuntu"
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> GET greeting
"Hallo Wetl!"
127.0.0.1:6379> EXIT

Dabei passiert folgendes:

  • Alles erstes wird der Schlüssel greeting mit dem String Hallo Welt als Wert angelegt (SET) und abgefragt (GET).

  • Dann wird eine Liste mit dem Schlüssel listExample angelegt (LPUSH), die drei Werte enthält. Es wird die Länge der Liste abgefragt (LLEN), ein weiterer Wert an den Anfang der Liste eingefügt (LPUSH) und die Liste komplett ausgegeben (LRANGE).

  • Danach wird der Hash releases mit zwei Schlüssel-Werte Paaren angelegt (HSET), alle Schlüssel-Werte Paare des Hashs angezeigt (HGETALL) und der Wert von jammy aus dem Hash releases gezielt abgefragt.

  • Zum Schluss wird die Datenbank auf Datenbank 1 gewechselt (SELECT 1), darin ein Schlüssel mit einem String-Wert angelegt und abgefragt. Danach wird wieder zurück zur Datenbank 0 gewechselt (SELECT 0).

  • Mit EXIT verlässt man die interaktive Kommandozeile.

Die komplette Dokumentation zu valkey-cli wie Optionen, nicht-interaktive Nutzung etc. findet man in der Dokumentation 🇬🇧.

Publish / Subscribe

Valkey ist auch ein Publish-Subscribe Server. Hier können Nachrichten an Kanäle gesendet werden („Publish“), auf dem die Empfänger dann lauschen können („subscribe“). Der Sender weiß nichts über die Empfänger, dass heißt es gibt keine Empfangsbestätigung oder ähnliches. Für den Empfänger ist sichergestellt, dass Nachrichten in der Reihenfolge empfangen werden, in der sie versendet wurden. Details und Beispiele zur Nutzung gibt es in der Dokumentation 🇬🇧.

Lua Skripting

Valkey unterstützt serverseitig das Ausführen von Lua-Skripten. Damit können z.B. Daten aus der Datenbank auf dem Server ver- / bearbeitet werden, bevor sie als Ergebnis zurück geliefert werden. Weitere Informationen sind in der Dokumentation 🇬🇧 zu finden.

Benchmark

Sowohl bei der Installation aus den Paketquellen als auch der manuellen Installation wird das Programm valkey-benchmark mit installiert, mit dessen Hilfe man die Performance der Installation auf der eigenen Hardware testen kann. Das Programm wird einfach über

valkey-benchmark 

gestartet. Der Benchmark kennt etliche Optionen, die man sich über die Option -h beim Aufruf des Programms anzeigen lassen kann.

Konfiguration

Die komplette Konfiguration ist standardmäßig in der Datei /etc/valkey/valkey.conf abgelegt. Die Konfiguration wird beim Starten des Server automatisch gelesen, wenn man nicht eine andere Konfigurationsdatei angibt.

Die Datei ist sehr ausführlich kommentiert, außerdem sind in der Dokumentation die Seiten

  • valkey.conf 🇬🇧 – allgemeine Einführung in die Konfigurationsdatei

  • Persistance 🇬🇧 – Erklärung zu den Optionen der Datenpersistenz

  • Replikation 🇬🇧 – Erklärung, wie man Valkey für die „Leader-Follower“ Replikation konfiguriert

als Einstiegspunkt empfehlenswert.

Clusterbetrieb

In der Standardeinstellung läuft der Valkey-Server als einzelne Instanz. Valkey ist aber auch clusterfähig. Einen ausführlichen Einstieg findet man im Cluster-Tutorial 🇬🇧 der Dokumentation.

Deinstallation

Leider hat Valkey keine Deinstallationsroutine zum Entfernen der manuellen Installation. Dies kann man aber recht einfach von Hand erledigen. Man wechselt ins Verzeichnis /usr/local/bin und führt dort den Befehl [4][5]:

sudo rm valkey-* 

aus. Anschließend schaut man in den Verzeichnissen /var/log und /var/lib, ob dort eventuell Logdateien und Datenbankdateien (Dateiendung .rdb) von Valkey vorhanden sind und löscht diese ebenfalls manuell. Dazu sind auch Root-Rechte notwendig. Hat man selber eine systemd Service Unit zum automatischen Starten des Server angelegt, muss man die Unit deaktivieren und entfernen. Hat man eine Konfigurationsdatei angelegt, entfernt man diese ebenfalls.

Hat man Valkey nur mit make kompiliert, aber nicht mit sudo make install installiert, reicht es, das Verzeichnis, in dem Valkey entpackt wurde, inklusive alle Unterverzeichnisse zu löschen.

Diese Revision wurde am 26. Juli 2025 08:53 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server, Datenbank, Key-Value Store