Redis ist eine hochverfügbare In-Memory-Datenbank. Der plattenresistente Key-Value-Datenspeicher eignet sich ideal für zahlreiche hochverfügbare Anwendungen.

Docker hingegen ist ein Tool zur Containerisierung von Anwendungen und Diensten, mit dem sich deren Umgebungen isolieren und separat ausführen lassen. Du kannst Docker als Paketmanager für Anwendungen und Dienste mit allen notwendigen Abhängigkeiten, Konfigurationen, Skripten usw. verwenden. Ein Skript, das Dockerfile genannt wird, wird in den Docker-Container eingefügt und ermöglicht es dir, den Container als eine einzige Einheit einzusetzen.

In diesem Artikel erfährst du, wie du diese beiden Open-Source-Technologien effektiv nutzen kannst. Außerdem wird erläutert, warum der Betrieb von Redis-Clustern in Docker-Containern so wichtig ist und welche Vorteile dies im Vergleich zum Betrieb von Redis-Clustern auf virtuellen Maschinen oder Bare-Metal-Servern hat.

Die verschiedenen Einsatzmöglichkeiten von Redis

Redis hat mehrere Vorteile. Zu den beliebtesten Anwendungen gehören:

  • Verteilter Cache für Schlüsselwert-Datenbanken
  • Nachrichten-Broker
  • Persistenter Objekt-Caching-Server

Außerdem kann Redis mehrere Datentypen und -strukturen unterstützen, so dass es sich sowohl als primäre als auch als sekundäre Datenbankschicht für Anwendungen eignet. Es unterstützt auch Listen, Streams, Hashes, Sets usw.

Du kannst die Vorteile von Redis aber noch weiter ausbauen, indem du es in Container packst.

Redis ist am besten in einem Container

Redis ist mit über einer Milliarde Downloads eines der beliebtesten Docker-Images in der Docker-Registry. Der Grund für die Containerisierung von Redis-Anwendungen ist, dass du die Vorteile von Docker und die Unterstützung der Community für die häufigsten Anwendungsfälle von Redis nutzen kannst.

Für das Redis-Docker-Image gibt es eine Open-Source-Community, die eine klare Dokumentation erstellt und pflegt. Und obendrein ist Docker äußerst zuverlässig und ermöglicht eine einfache Nutzung und Flexibilität.

Benutzerfreundlichkeit

Docker isoliert die Umgebungen sowohl für Anwendungen als auch für Dienste, die in Containern laufen. Die Isolierung bedeutet, dass du Redis-Images verpacken, erstellen und ausliefern kannst, die unabhängig vom Host-Betriebssystem funktionieren, was die Entwicklung und den Betrieb von Redis-Anwendungen in Docker erleichtert. Außerdem vereinfacht Docker Desktop die Einrichtung einer konsistenten lokalen Entwicklungsumgebung, was besonders für große Teams nützlich ist.

Sicherheit:

Du kannst Redis innerhalb eines Containers auf Sicherheitsschwachstellen überprüfen. Docker nutzt Snyk, ein Tool, das Einblick in die Sicherheit von Docker-Images gibt. Es scannt Docker-Container und liefert Details und Abhilfemaßnahmen im Falle von beschädigten Images. Docker kann auch eine Software Bill of Material (SBOM) erstellen, um alle Abhängigkeiten zu scannen, die bei der Erstellung von Container-Images verwendet werden, allerdings ist dies noch experimentell.

Flexibilität

Docker ist für die meisten Unix-basierten und Windows-Betriebssysteme und Anwendungen verfügbar. Da du Container verwendest, um Software von ihrer Umgebung zu isolieren und sicherzustellen, dass sie mit allen Systemen funktioniert, laufen Redis-Anwendungen und -Dienste trotz der Infrastruktur immer.

Verlässlichkeit

Mit Docker kannst du jeden containerisierten Workload in jeder Umgebung zuverlässig ausführen. Redis ist in Docker zuverlässig, weil Docker-Container regelmäßig Snapshots des Container-Images erstellen, auf die du im Falle einer fehlerhaften oder beschädigten Datenbank zurückgreifen kannst. Du kannst auch ein Docker-Volume erstellen, indem du ein Verzeichnis mit der Redis-Datenbankdatei innerhalb des Containers einhängst.

Ein Docker-Volume hilft dabei, den Container vor versehentlichem Datenverlust zu schützen. Ein Nachteil ist jedoch, dass Docker-Volumes keine Image-Snapshots enthalten. Du musst die Daten in deiner Redis-Datenbankdatei regelmäßig manuell speichern.

Wie du Redis mit Docker verwendest

Um deinen Redis-Speicher in einen Docker-Container einzubinden, musst du Docker in der Zielumgebung haben. Die folgende Anleitung zeigt dir, wie du Docker unter Windows installierst.

Für ein Unix- oder Unix-basiertes Betriebssystem kannst du einer Anleitung auf der Docker-Website folgen. Nach der Installation und Konfiguration kannst du ein Netzwerk innerhalb deines Docker-Containers erstellen. Dann kannst du Redis installieren und eine Datenbank erstellen. Schließlich kannst du Operationen mit deiner Redis-Datenbank durchführen.

Installiere zunächst Docker auf deinem Betriebssystem. Optional kannst du zum Docker Hub navigieren und ein Konto erstellen. Du brauchst ein Konto, um deine Images zu erstellen und zu veröffentlichen.

Anmeldeformular für den Docker Hub
Docker Hub

Nachdem du ein Konto erstellt hast, melde dich bei Docker Hub an und lade die neueste Version von Docker Desktop für dein Betriebssystem herunter.

Downloadseite für Docker Desktop mit Optionen für verschiedene Betriebssysteme.
Docker Download Seite

Nach der Installation gehst du in dein Terminalfenster, um zu sehen, ob die Docker-Engine betriebsbereit ist, und gibst den folgenden Befehl ein:

docker --version
Überprüfe die installierte Version von Docker
Docker Version installiert

Gib dann ein: docker-compose --version.

Überprüfe die mit Docker installierte Version von Compose
Compose mit Docker installiert

Compose ist ein Tool zur Definition und Ausführung von Multi-Container-Docker-Anwendungen mithilfe von YAML-Dateien, die du zur Konfiguration von Anwendungsdiensten verwendest.

Du kannst ein Dockerized Redis ausführen, um zu überprüfen, ob die Docker-Engine betriebsbereit ist, indem du den folgenden Code verwendest. In diesem Beispiel wird das Redis-Image von Docker Hub ausgeführt und als my-redis-container bezeichnet.

docker run --name my-redis-container -d redis
Starte das Redis-Image von Docker Hub unter dem Namen my-redis-container
Redis-Image von Docker Hub mit dem Namen my-redis-container

Da du das Image nicht lokal hast, zieht Docker das Redis-Image aus dem Docker Hub.

Jetzt kannst du Docker Desktop öffnen, um zu bestätigen, dass das Redis-Image gezogen wurde. Im Dashboard klickst du auf der linken Seite auf Images.

Überprüfe, ob dein Redis-Image auf dem Docker-Desktop funktioniert
Docker Desktop

Jetzt kannst du ein Netzwerk erstellen. Beachte, dass der Docker-Treiber die eingebauten Netzwerk-Treiber Bridge oder Overlay verwendet, um ein Docker-Netzwerk zu erstellen. Du kannst auch einen Netzwerktreiber eines Drittanbieters installieren und verwenden.

Der Unterschied besteht darin, dass Bridge-Netzwerke auf einer einzigen Docker-Engine-Installation isoliert sind, während Overlay-Netzwerke mehrere Docker-Hosts umfassen, auf denen jeweils eine Engine läuft.

Typ:

docker network create -d bridge kinsta-demo-network
Erstelle ein neues Docker-Netzwerk mit dem Bridge-Treiber
Docker-Netzwerk mit dem Bridge-Treiber

Wenn du standardmäßig keine Treiber angibst, verwendet Docker den Bridge-Treiber, um ein neues Netzwerk zu erstellen, da es den Bridge-Treiber automatisch erstellt, wenn du die Docker Engine installierst. Wenn du jedoch einen Docker-Container mit dem Befehl Docker run ausführst, wird er dieses Netzwerk nicht verwenden.

Jetzt, da du ein Netzwerk hast, musst du Redis innerhalb des Docker-Containers installieren. Gib dazu Folgendes ein: docker pull redis.

Ziehe das Redis-Image aus dem Docker Hub
Ziehe das Redis-Image aus dem Docker Hub

Um zu überprüfen, ob das Redis-Image richtig installiert ist, führe einen der folgenden Befehle aus:

docker images
docker image ls
Verfügbare Docker-Images im Terminal des Benutzers auflisten
Verfügbare Docker-Images im Terminal des Benutzers

Als nächstes erstellst und startest du den Redis-Container. Dazu führst du den folgenden Befehl aus:

docker run -it –name dev_kinsta_redis_container -d redis
Erstelle und starte den Docker-Container
Docker Container

Überprüfe nun, ob Redis in dem Container läuft. Dazu gibst du ein: docker ps.

Überprüfe, ob Redis in einem Container läuft
Überprüfe, ob Redis in einem Container läuft

Nachdem du sichergestellt hast, dass dein Docker-Container läuft, kannst du ihn dem Netzwerk hinzufügen. Gib ein: docker network connect .

Hinzufügen eines Docker-Containers zum erstellten Docker-Netzwerk
Hinzufügen eines Docker-Containers zum erstellten Docker-Netzwerk

Wenn alles wie erwartet funktioniert, musst du im nächsten Schritt überprüfen, ob dein Redis-Server, der in Docker läuft, bereit ist, Verbindungen anzunehmen. Verwende dazu docker logs.

Überprüfe, ob das Redis-Image innerhalb des Docker-Containers läuft
Überprüfe, ob das Redis-Image innerhalb des Docker-Containers läuft

Als Nächstes musst du eine Datenbank erstellen, denn du brauchst eine Möglichkeit, dich mit dem Redis-Container zu verbinden, um Befehle auf dem Server auszuführen. Dazu gibst du ein: docker exec -it bash. Du kannst den Containernamen und die Container-ID austauschbar verwenden.

Verbinde dich mit der Redis-Container-Instanz.
Verbinde dich mit der Redis-Container-Instanz.

Verwende im Container die CLI, um Befehle auszuführen. Beachte, dass Redis automatisch Docker-Hosts installiert hat. Um die Redis-CLI zu verwenden, gibst du ein: redis-cli.

Verwende die Redis-CLI, um Redis-Befehle auszuführen
Verwende die Redis-CLI, um Redis-Befehle auszuführen

Damit wirst du mit dem Standardport für Redis auf dem lokalen Host verbunden. Gib ein: ping, und die Antwort sollte pong lauten.

Teste, ob die Redis-Verbindung steht und funktioniert
Teste, ob die Redis-Verbindung steht und funktioniert

Als Nächstes wählst du eine Datenbank innerhalb deines Redis-Servers aus, indem du select eingibst. Obwohl die Standarddatenbank 0 ist, wähle db 1.

Eine bestimmte Redis-Datenbank auswählen
Eine bestimmte Redis-Datenbank auswählen

Als nächstes fügst du Daten in die Datenbank ein. Verwende den Redis-Befehl SET. Gib dazu SET <key> <value> ein.

Zum Beispiel:

SET mykey "Hello"

Um denselben Schlüssel zu erhalten, gibst du ein:

get myKey
Einfügen und Abrufen von Daten aus Redis
Einfügen und Abrufen von Daten aus Redis

Um den Wert des Schlüssels zu erhalten, führe get aus. Dies gibt den Wert zurück. Als nächstes überprüfst du deine Redis-Datenbank, indem du MONITOR eingibst.

Überwache die Redis-Datenbank
Überwache die Redis-Datenbank

Zum Schluss beendest du den Redis-Server, indem du das CLI beendest. Gib zweimal exit ein, um die CLI und Redis zu beenden.

Beenden der Redis-CLI
Beenden der Redis-CLI

Beende schließlich den Redis-Container, indem du docker stop eingibst.

Führe den Befehl aus, um den Docker-Container anzuhalten
Führe den Befehl aus, um den Docker-Container anzuhalten

Redis mit DevKinsta

Mit DevKinsta kannst du eine WordPress-Seite mit einer Redis-Datenbank verbinden. Mit DevKinsta funktioniert das Redis-Add-on nahtlos als Objekt-Cache, um Daten über mehrere Seitenladungen hinweg zu erhalten. Das bedeutet, dass du mit dem Redis-Add-on den Cache nutzen kannst, um Objekte wiederzuverwenden, anstatt ständig die MySQL-Datenbank abzufragen.

Nachdem du DevKinsta heruntergeladen und eingerichtet hast, installierst du den Docker Desktop als Abhängigkeit, mit dem er lokale Umgebungsdateien in einem Container erstellt. Mit dieser Einrichtung kannst du das Redis Add-on in Devkinsta konfigurieren.

So kann das Redis-Add-on für DevKinsta als sekundäre Quelle genutzt werden, was die Belastung der primären Datenbank verringert, die Antwortzeiten erhöht und die Anwendung schneller arbeiten lässt.

Das bedeutet, dass die App mehr Last bewältigen und effizient skalieren kann. Schau dir unsere Dokumentation zur Verwendung von Redis als dauerhaften Objekt-Cache für deine WordPress Webseite an.

Zusammenfassung

Es hat viele Vorteile, Redis in einem Docker-Container auszuführen. Er bietet eine Sandbox-Umgebung für deine Anwendungen, so dass du dich nicht mehr um die Plattform kümmern musst, auf der du deine Anwendungen einsetzt. Außerdem ermöglicht Docker eine einfache Nutzung, Flexibilität und hohe Zuverlässigkeit.

Was die Sicherheit angeht, kannst du mit Synk, einem Tool, das die Sicherheit von Docker-Images überprüft, sofort nach dem Auspacken nach Sicherheitslücken suchen. Und was die Flexibilität angeht, so funktioniert Docker für die meisten Unix-basierten und Windows-Betriebssysteme und Anwendungen. Diese Flexibilität bedeutet, dass gedockte oder containerisierte Anwendungen oder Dienste immer laufen, unabhängig vom Betriebssystem.

Es ist ganz einfach, Docker und das Redis-Add-on mit DevKinsta zu nutzen, das eine gedockte WordPress-Website lokal startet, wenn du es startest. Probiere DevKinsta und das Redis Add-on aus, um die Leistungsfähigkeit von Redis in Docker noch heute zu nutzen.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.