Installation von Redis und Valkey unter AlmaLinux

Linux 7 Min. Lesezeit

Redis ist eine im Arbeitsspeicher gespeicherte Schlüssel-Wert-Datenbank. Bei Websites wird sie meist als Cache verwendet: Der Objekt-Cache von WordPress, Sitzungsdaten oder temporäre Daten eines Online-Shops werden darin gespeichert, sodass die Anwendung nicht bei jeder Anfrage auf die Datenbank zugreifen muss.

Valkey ist eine nach der Lizenzumstellung von Redis im Jahr 2024 gestartete Open-Source-Variante (unter BSD-Lizenz), die von der Linux Foundation betreut wird. Sie ist aus Redis 7.2 hervorgegangen und verwendet dasselbe Protokoll sowie dieselben Befehle, sodass für Redis geschriebene Programme und PHP-Erweiterungen ohne Änderungen damit funktionieren. Red Hat liefert daher in AlmaLinux 10 nur noch Valkey aus.

Wir haben die Schritte im Oktober 2026 auf den Systemen AlmaLinux 10.2 und 9.8 getestet. Führen Sie die Befehle als Root-Benutzer oder mit „sudo“ aus.

Welches von wo?

System Im Speicher des Systems Im Remi-Speicher
AlmaLinux 10 Valkey 8.0 (ohne Redis) Redis 7.2 … 8.10, Valkey 8.1 … 9.2
AlmaLinux 9 Redis 6.2 (Standard), Redis 7.2 (Modul „redis:7“), Valkey 8.0 Redis 6.0 … 8.10, Valkey 8.1 … 9.2

Sofern Sie keine besonderen Anforderungen haben, verwenden Sie bitte die vom System bereitgestellte Version: Valkey auf AlmaLinux 10 oder Redis 7.2 bzw. Valkey auf AlmaLinux 9. Diese werden durch die Updates von AlmaLinux aktualisiert. Falls eine Anwendung ausdrücklich Redis 8 erfordert (beispielsweise aufgrund der Redis Query Engine oder des JSON-Moduls), installieren Sie diese bitte aus dem Remi-Repository.

A) Valkey aus dem Systemspeicher

sudo dnf install valkey
sudo systemctl enable --now valkey
valkey-cli ping

Die Antwort lautet „PONG“. Im Test wurde „valkey-8.0.11“ auf AlmaLinux 10 installiert. „Valkey“ bezeichnet zudem eine mit Redis kompatible Versionsnummer:

valkey-cli INFO server | grep -E 'redis_version|valkey_version'
redis_version:7.2.4
valkey_version:8.0.11

Die Namen der Programme beginnen mit „valkey-“ (valkey-server, valkey-cli, valkey-benchmark), der Name des Dienstes lautet „valkey“, die Konfigurationsdatei befindet sich unter /etc/valkey/valkey.conf, das Datenverzeichnis unter /var/lib/valkey und das Protokoll unter /var/log/valkey/valkey.log. Die Konfigurationsdatei ist nur für root lesbar, daher ist sowohl zum Bearbeiten als auch zum Anzeigen ein sudo-Befehl erforderlich. Die Befehlsnamen „redis-cli“ und „redis-server“ existieren unter AlmaLinux 10 nicht, und zum Zeitpunkt des Tests gab es auch kein Kompatibilitätspaket dafür; ersetzen Sie diese in den Skripten bitte durch „valkey-cli“.

Unter AlmaLinux 9 kann Redis 7.2 über das Modul installiert werden (im Test wurde „redis-7.2.16“ installiert):

sudo dnf module enable redis:7
sudo dnf install redis
sudo systemctl enable --now redis

Ohne Modulauswahl würde der Befehl „dnf install redis“ unter AlmaLinux 9 die alte Redis-Version 6.2 installieren.

B) Redis 8 aus dem Remi-Repository

Nachdem Sie das Remi-Repository eingerichtet haben (siehe: Installation des Remi-Repositorys unter AlmaLinux), wählen Sie die gewünschte Version aus, beispielsweise Redis 8.4:

sudo dnf module enable redis:remi-8.4
sudo dnf install redis
sudo systemctl enable --now redis
redis-cli ping

Im Test wurde „redis-8.4.8“ installiert, zusammen mit den empfohlenen Abhängigkeiten „redis-bloom“, „redis-json“ und „redis-timeseries“. Die Konfigurationsdatei befindet sich unter „/etc/redis/redis.conf“, das Datenverzeichnis unter „/var/lib/redis“ und das Protokoll unter „/var/log/redis/redis.log“.

Falls Valkey ebenfalls auf dem Rechner installiert ist, deaktivieren und entfernen Sie es bitte zunächst (sudo systemctl disable --now valkey, sudo dnf remove valkey), da beide Dienste den Port 6379 nutzen.

Redis 8 wird unter drei verschiedenen Lizenzen veröffentlicht, darunter auch unter der AGPLv3. Auf Ihrem eigenen Server und als Cache für Ihre eigene Anwendung entstehen Ihnen dadurch keine Verpflichtungen; sollten Sie Redis jedoch als Dienstleistung für Dritte anbieten, lesen Sie bitte die Lizenzbedingungen sorgfältig durch.

Die Grundeinstellungen

Die folgenden Angaben gelten sowohl für Valkey als auch für Redis; die Dateien lauten /etc/valkey/valkey.conf bzw. /etc/redis/redis.conf. Im Test wurden beide Pakete mit diesen Standardwerten installiert:

bind 127.0.0.1 -::1
protected-mode yes
port 6379

Das bedeutet, dass der Server Verbindungen nur von innerhalb des Computers akzeptiert. Sofern Redist nur die eigene Website auf demselben Server betreibt, sollten Sie daran nichts ändern: Öffnen Sie den Port 6379 niemals für den Internetzugang. Sollte ein weiterer Server diesen Port nutzen, sollte dies über ein privates Netzwerk oder einen SSH-Tunnel erfolgen, und Sie sollten auf jeden Fall ein Passwort festlegen.

Darüber hinaus überwacht es auch Unix-Sockets: /run/valkey/valkey.sock sowie /run/redis/redis.sock.

Passwort

Suchen Sie in der Konfigurationsdatei die Zeile „# requirepass foobared“ und ändern Sie diese wie folgt:

requirepass Hosszu-Egyedi-Jelszo

Nach einem Neustart führt jeder Befehl ohne Passwort zu einer Fehlermeldung:

NOAUTH Authentication required.

redis-cli (bei Valkey: valkey-cli) fordert das Passwort mit dem Schalter --askpass verschlüsselt an oder entnimmt es der Umgebungsvariablen REDISCLI_AUTH. Der Schalter -a jelszo funktioniert ebenfalls, allerdings wird das Passwort auf diese Weise in den Befehlsverlauf und die Prozessliste übernommen.

Speicherbegrenzung

Legen Sie für den Cache eine Obergrenze fest und geben Sie an, welche Daten Redis löschen soll, wenn der Speicher voll ist:

maxmemory 256mb
maxmemory-policy allkeys-lru

„allkeys-lru“ löscht die am längsten verwendeten Schlüssel, was für einen Cache geeignet ist. Weitere Optionen sind: „allkeys-lfu“ (löscht die am seltensten verwendeten Schlüssel) und „volatile-lru“ (löscht nur Schlüssel mit Ablaufzeit). Bei der Standardeinstellung „noeviction“ gibt Redis bei vollem Speicher einen Fehler bei Schreibvorgängen aus. Wenn Sie in Redis Daten speichern, die nicht verloren gehen dürfen (z. B. Aufgaben in einer Warteschlange), sollten Sie die Regel „allkeys-“ nicht verwenden. Legen Sie die Obergrenze im Verhältnis zum gesamten Arbeitsspeicher des Servers fest: Es muss ausreichend Speicher für PHP und die Datenbank verbleiben (siehe: Speicher knapp: OOM-Killer und Auslagerungsdatei).

Nach der Änderung:

sudo systemctl restart valkey    # vagy: redis

Die Overcommit-Warnung

Beim ersten Start erschien folgende Warnmeldung im Protokoll:

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition.

Die Hintergrundsicherung (das Schreiben des Speicherinhalts auf die Festplatte) ist an diese Kernel-Einstellung gekoppelt. Aktivieren Sie diese dauerhaft:

echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/90-redis.conf
sudo sysctl -p /etc/sysctl.d/90-redis.conf

Nach einem Neustart ist die Warnmeldung verschwunden.

Test über die Befehlszeile

redis-cli-Sitzung unter AlmaLinux 10: Passwortangabe mit dem Schalter --askpass, anschließend PING, SET, GET, Schlüssel mit Ablaufzeit, INCR, CONFIG GET maxmemory-policy und DBSIZE

SET udvozles "Szia, Redis!"
GET udvozles
SET munkamenet:42 aktiv EX 3600
TTL munkamenet:42
INCR latogatok
CONFIG GET maxmemory-policy
DBSIZE

EX 3600 erstellt einen Schlüssel, der nach einer Stunde abläuft; die TTL gibt die verbleibenden Sekunden an. Redis dient in erster Linie als Cache: Die Daten befinden sich im Arbeitsspeicher und werden nur gelegentlich auf die Festplatte geschrieben; daher sollten Sie wichtige Daten nicht ausschließlich hier speichern.

Verwendung in PHP

Die PHP-Redis-Erweiterung funktioniert sowohl mit Valkey als auch mit Redis:

sudo dnf install php-pecl-redis6
sudo systemctl restart php-fpm

Unter AlmaLinux 10 stammt PHP 8.3 aus dem AppStream-Repository, PHP aus dem Remi-Repository. Test:

php -r '$r = new Redis(); $r->connect("127.0.0.1", 6379); $r->auth("Hosszu-Egyedi-Jelszo"); $r->set("teszt", "mukodik"); echo $r->get("teszt"), PHP_EOL;'

Im Test lautete die Antwort „mukodik“. Bei WordPress bindet ein Objekt-Cache-Plugin Redist ein; für die Einrichtung benötigen Sie die Host-Adresse 127.0.0.1, den Port 6379 und das oben genannte Passwort. Inwieweit der Cache die Datenbank entlastet, erfahren Sie in unserem Blogbeitrag zur Datenbankoptimierung.

Versionswechsel, Deinstallation

Sie können zwischen den Remi-Modulen genauso wechseln wie bei PHP (sudo dnf module switch-to redis:remi-8.6). Wechseln Sie mit Produktionsdaten nicht zu einer älteren Hauptversion zurück: Ältere Redis-Versionen können die von neueren Versionen erstellte Sicherungsdatei (/var/lib/redis/dump.rdb) nicht immer einlesen und brechen beim Start mit einer Fehlermeldung ab. Kehren Sie in diesem Fall zur neueren Version zurück oder speichern Sie die Datei und löschen Sie sie, falls es sich nur um einen Cache handelte.

Entfernung (bei Valkey: „valkey“):

sudo systemctl disable --now redis
sudo dnf remove redis redis-bloom redis-json redis-timeseries
sudo dnf module reset redis

Die Konfigurationsdateien (/etc/redis/) und die Daten (/var/lib/redis/) können auch weiterhin auf dem Server verbleiben; sollten Sie diese nicht mehr benötigen, löschen Sie sie bitte nach dem Sichern. Falls Sie die Einstellung „vm.overcommit_memory“ ausschließlich für Redis vorgenommen haben, können Sie auch die Datei „/etc/sysctl.d/90-redis.conf“ löschen.

Wie viel Arbeitsspeicher wird benötigt?

Der Speicherbedarf von Redis hängt von den gespeicherten Daten ab. Die aktuelle Auslastung wird durch den Befehl „redis-cli INFO memory“ (Zeile „used_memory_human“) angezeigt; passen Sie den Wert für „maxmemory“ nach einigen Tagen Betrieb entsprechend an. Falls dem Server neben dem Webserver, der Datenbank und Redis nicht genügend Speicher zur Verfügung steht, können Sie zu einem größeren KVM-VPS-Paket wechseln oder Redis auf einem separaten Rechner betreiben.

Zurück: Linux-Artikel (62)