Redis is een in-memory database met een hoge beschikbaarheid. De disk-persistente key-value gegevensopslag is ideaal voor meerdere gelijktijdige applicaties die een hoge beschikbaarheid vereisen.

Docker is daarentegen een hulpmiddel om applicaties en diensten te containeriseren, hun omgevingen te isoleren en ze afzonderlijk te laten draaien. Je kunt Docker gebruiken als een pakketbeheerder voor applicaties en diensten met alle benodigde afhankelijkheden, configuraties, scripts, enz. Een script genaamd een Dockerfile wordt in de Docker-container geplaatst en stelt je in staat om de container als één geheel uit te rollen.

Dit artikel leert je hoe je deze twee open-source technologieën effectief kunt gebruiken. Het gaat ook in op waarom het draaien van Redis clusters in Docker containers van vitaal belang is en wat de voordelen zijn ten opzichte van het draaien van Redis clusters op virtuele machines of bare metal servers.

De verschillende toepassingen van Redis

Redis heeft verschillende voordelen. De meest populaire toepassingen zijn:

    • Gedistribueerde key-value databasecache
    • Message broker
    • Server voor persistente object caching

Bovendien kan Redis meerdere gegevenstypen en structuren ondersteunen, waardoor het geschikt is voor gebruik als primaire en secundaire databaselaag voor applicaties. Het ondersteunt verder lijsten, streams, hashes, sets, enz.

Je kunt de voordelen van Redis echter verder uitbreiden door het te containeriseren.

Redis werkt het beste in een container

Redis is een van de populairste Docker images in het Docker register, met meer dan een miljard downloads. De reden om Redis applicaties te containeriseren is om de voordelen van Docker en de ondersteuning van de gemeenschap te krijgen voor de meest voorkomende Redis gebruikssituaties.

Het Redis Docker image heeft een open-source gemeenschap die duidelijke documentatie maakt en onderhoudt. En als klap op de vuurpijl is Docker zeer betrouwbaar en maakt het eenvoudig gebruik en flexibiliteit mogelijk.

Gebruiksgemak

Docker isoleert de omgevingen voor zowel apps als diensten die in containers draaien. Isolatie betekent dat je Redis images kunt zippen, bouwen en versturen en dat ze altijd werken, ongeacht het besturingssysteem van de host, wat het ontwikkelen en draaien van Redis applicaties binnen Docker gemakkelijk maakt. Verder vereenvoudigt Docker Desktop het opzetten van een consistente lokale ontwikkelomgeving, wat vooral handig is voor grote teams.

Beveiliging

Je kunt met Redis binnen een container scannen op beveiligingslekken. Docker gebruikt Snyk, een tool die inzicht geeft in de veiligheid van Docker images. Deze scant Docker containers en geeft details en herstel in geval van corrupte images. Docker kan ook een software bill of material (SBOM) genereren voor het scannen van alle dependencies die gebruikt worden bij het bouwen van container images, hoewel dit nog experimenteel is.

Flexibiliteit

Docker is beschikbaar voor de meeste op Unix gebaseerde en Windows besturingssystemen en applicaties. Omdat je containers gebruikt om software te isoleren van zijn omgeving – zodat het met alle systemen werkt – draaien Redis apps en diensten altijd, ondanks de infrastructuur.

Betrouwbaarheid

Met Docker kun je elke gecontaineriseerde werklast betrouwbaar draaien in elke omgeving. Redis is betrouwbaar in Docker omdat Docker containers periodiek snapshots maken van het container image, waardoor je in geval van een slechte of corrupte database kunt terugvallen op deze snapshots. Je kunt ook een Docker volume aanmaken door een map met het Redis database bestand in de container te mounten.

Een Docker volume helpt om de container veilig te houden tegen elke vorm van onbedoeld gegevensverlies. Een voorbehoud is echter dat Docker volumes geen image snapshots bevatten. Je moet de gegevens in je Redis databasebestand periodiek handmatig opslaan of back-uppen.

Zo gebruik je Redis met Docker

Om je Redis store in een Docker container te plaatsen, moet je Docker in de target omgeving hebben. De volgende instructies laten zien hoe je Docker installeert op Windows.

Je kunt een gids volgen vanuit de Docker website voor een Unix of Unix gebaseerd OS. Na installatie en configuratie kun je een netwerk aanmaken binnen je Docker container. Vervolgens kun je Redis installeren en een database maken. Tot slot kun je bewerkingen uitvoeren op je Redis database.

Installeer eerst Docker op je besturingssysteem. Navigeer optioneel naar de Docker Hub en maak een account aan. Je hebt een account nodig om je images aan te maken en te publiceren.

Docker hub inschrijfformulier
Docker Hub

Nadat je een account hebt aangemaakt, meld je je aan bij Docker Hub en download je de laatste versie van Docker Desktop van je besturingssysteem.

Docker downloadpagina
Docker downloadpagina

Ga na de installatieprocedure naar je terminalvenster om te zien of de Docker Engine klaar is om te draaien en voer het volgende commando in:

docker --version
Check de geïnstalleerde versie van Docker
Docker versie geïnstalleerd

Typ dan: docker-compose --version.

Check de versie van compose geïnstalleerd met Docker
Compose geïnstalleerd met Docker

Compose is een tool voor het definiëren en uitvoeren van multi-container Docker applicaties met behulp van YAML bestanden, die je gebruikt om applicatieservices te configureren.

Je kunt een Dockerized Redis draaien om te valideren dat de Docker Engine draait met de onderstaande code. Dit voorbeeld draait het Redis image van Docker Hub en noemt het my-redis-container.

docker run --name my-redis-container -d redis
Run het Redis image van Docker Hub met de naam my-redis-container
Redis image van Docker Hub met de naam my-redis-container

Omdat je het image niet lokaal hebt, haalt Docker het Redis image op van de Docker Hub.

Nu kun je Docker Desktop openen om te bevestigen dat het de Redis image heeft opgehaald. Klik op het Dashboard op Images in het linkerpaneel.

Docker Desktop
Docker Desktop

Nu kun je een netwerk aanmaken. Let op dat de Docker driver de bridge of de overlay ingebouwde netwerkdrivers gebruikt om een Docker netwerk aan te maken. Je kunt ook een externe netwerkdrive installeren en gebruiken.

Het verschil is dat bridge netwerken geïsoleerd zijn op een enkele Docker Engine installatie, terwijl overlay netwerken meerdere Docker hosts bevatten, die elk een engine draaien.

Type nu:

docker network create -d bridge kinsta-demo-network
Maak een nieuw Docker netwerk met de bridge driver
Docker netwerk met de bridge driver

Als je standaard geen drive opgeeft, gebruikt Docker de bridge drive om een nieuw netwerk aan te maken, omdat het automatisch de bridge drive aanmaakt als je de Docker Engine installeert. Als je echter een Docker container uitvoert met het Docker run commando, zal deze dit netwerk niet gebruiken.

Nu je een netwerk hebt, is het installeren van Redis in de Docker container de volgende stap. Typ daarvoor: docker pull redis.

Pull de Redis image op van de Docker Hub
Pull de Redis image op van de Docker Hub

Om te controleren of het Redis image correct is geïnstalleerd, voer je een van de volgende commando’s uit:

docker images
docker image ls
Toon de beschikbare Docker-images in de terminal van de gebruiker
Beschikbare Docker-images in de terminal van de gebruiker

Vervolgens maak en start je de Redis container. Voer daarvoor het volgende commando uit:

docker run -it –name dev_kinsta_redis_container -d redis
Maak en draai de Docker container
Docker container

Controleer nu of Redis in de container draait. Typ daarvoor: docker ps.

Controleer of Redis draait in een container
Controleer of Redis draait in een container

Nu je hebt bevestigd dat je Docker container draait, kun je de container toevoegen aan het netwerk. Typ: docker network connect .

Voeg een Docker container toe aan het aangemaakte docker-netwerk
Voeg een Docker container toe aan het aangemaakte docker-netwerk

Nu alles werkt zoals verwacht, is de volgende stap om te controleren of je Redis server die in Docker draait klaar is om verbindingen te accepteren. Gebruik daarvoor docker logs.

Controleer of het Redis image in de Docker container draait
Controleer of het Redis image in de Docker container draait

Vervolgens moet je een database aanmaken omdat je een manier nodig hebt om verbinding te maken met de Redis container om commando’s op de server uit te voeren. Typ hiervoor: docker exec -it bash. Je kunt de containernaam en container ID door elkaar gebruiken.

Maak verbinding met de Redis container instantie.
Maak verbinding met de Redis container instance.

Gebruik in de container de CLI om commando’s uit te voeren. Merk op dat Redis automatisch Docker hosts heeft geïnstalleerd. Om de Redis-CLI te gebruiken typ je: redis-cli.

Gebruik de Redis CLI om Redis commando's uit te voeren
Gebruik de Redis CLI om Redis commando’s uit te voeren

Dit verbindt je met de standaardpoort voor Redis op de lokale host. Typ: ping, en het antwoord zou pong moeten zijn.

Test om te zien of de Redis verbinding werkt
Test om te zien of de Redis-verbinding werkt

Selecteer vervolgens een database binnen je Redis server door dit te typen: select. Hoewel de standaard database 0 is, selecteer je db 1.

Selecteer een bepaalde Redis database
Selecteer een bepaalde Redis database

Voeg vervolgens gegevens in de database in. Gebruik het Redis SET commando. Typ daarvoor SET <key> <value>.

Bijvoorbeeld:

SET mykey "Hello"

Om dezelfde sleutel te krijgen, typ je:

get myKey
Gegevens invoegen en ophalen uit Redis
Gegevens invoegen en ophalen uit Redis

Om de waarde voor de sleutel te krijgen, voer je get uit. Dit geeft de waarde terug. Controleer vervolgens je Redis database door MONITOR te typen.

Monitor de Redis database
Monitor de Redis database

Stop tenslotte de Redis server door de CLI af te sluiten. Typ tweemaal exit om de CLI en Redis af te sluiten.

Afsluiten van de Redis CLI
Afsluiten van de Redis CLI

Stop tenslotte de Redis container door docker stop te typen.

Voer het commando uit om de Docker container te stoppen met draaien
Voer het commando uit om de Docker container te stoppen met draaien

Redis met DevKinsta

Met DevKinsta kun je een WordPress site verbinden met een Redis database. Met DevKinsta werkt de Redis add-on naadloos als een objectcache om gegevens over verschillende paginaladingen heen te persisten. Dit betekent dat je door de Redis add-on te gebruiken, de cache kunt gebruiken om objecten te hergebruiken in plaats van voortdurend de MySQL database te bevragen.

Na het downloaden en instellen van DevKinsta, installeer je de Docker Desktop als een dependency, die het gebruikt om lokale omgevingsbestanden binnen een container aan te maken. Met deze instelling kun je de Redis add-on in DevKinsta configureren.

Daarom kan de Redis add-on voor DevKinsta gebruikt worden als secundaire bron, waardoor de belasting van de primaire database vermindert, de responstijden toenemen en de applicatie sneller werkt.

Dit vertaalt zich in de app die meer belasting aankan en efficiënt schaalt. Bekijk dit artikel om de Redis plugin met je website te gebruiken.

Samenvatting

Er zijn veel voordelen aan het draaien van Redis in een Docker container. Het biedt een sandboxed omgeving voor je applicaties, dus je hoeft je niet langer zorgen te maken over het platform waarop je je applicaties deployt. Verder maakt Docker gebruiksgemak, flexibiliteit en hoge betrouwbaarheid mogelijk.

Wat beveiliging betreft, kun je out of the box controleren en scannen op beveiligingslekken met Synk, een tool die inzicht geeft in de veiligheid van Docker images. En wat flexibiliteit betreft: Docker werkt voor de meeste Unix gebaseerde en Windows besturingssystemen en toepassingen. Deze flexibiliteit betekent dat dockerized of gecontaineriseerde apps of diensten altijd draaien, ongeacht het OS.

Het is eenvoudig om Docker en de Redis add on te gebruiken met DevKinsta, dat een dockerized WordPress site lokaal opstart als je hem start. Bekijk DevKinsta en de Redis add-on om vandaag nog de kracht van Redis in Docker te krijgen.

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.