Het kortste antwoord op de vraag wat is Redis luidt: het is een extreem snelle, in-memory key-value datastore. Redis, een afkorting van Remote Dictionary Server, houdt data in het RAM-geheugen in plaats van op schijf, waardoor het in microseconden kan lezen en schrijven. In deze gids leg ik uit waarom Redis zo snel is, wanneer het echt helpt en hoe het past in een webproject als cache, sessieopslag en queue, met praktische voorbeelden.
Wat is Redis en waarom is het zo snel?
Redis is niet bedoeld om traditionele relationele databases (MySQL, PostgreSQL) te vervangen, maar om er als snelle laag voor te gaan staan. Doordat de hele dataset in het geheugen leeft, verdwijnt de vertraging van schijftoegang. Daar bouwen een paar kernkenmerken op voort:
- Het gebruikt een single-threaded, event-gedreven model, waardoor het honderdduizenden bewerkingen per seconde aankan zonder lock-conflicten.
- Het biedt meer dan platte tekst: rijke datastructuren zoals lijsten, sets, sorted sets, hashes en tellers.
- Desgewenst kan het data ook naar schijf schrijven (
RDB-snapshots of hetAOF-logboek) voor bestendigheid bij herstarts.
Redis is dus niet zomaar een "cache"; goed ingezet kan het dienen als sessieopslag, queue-broker, realtime teller en zelfs een eenvoudig berichtenkanaal.
Basiscommando's en datastructuren
De snelste manier om met Redis te beginnen is de command-lineclient redis-cli. De meest gebruikte commando's zijn vrij intuïtief:
SET gebruiker:42:naam "Aslain"
GET gebruiker:42:naam
EXPIRE gebruiker:42:naam 3600 # automatisch verwijderen na 1 uur
INCR pagina:weergaven # atomaire teller
LPUSH wachtrij:mail "id:1001" # vooraan in de lijst plaatsen
HSET product:7 naam "Toetsenbord" prijs 450
De commando's EXPIRE en INCR zijn hier belangrijk. Automatisch verlopen (TTL) maakt Redis ideaal voor caching, terwijl atomair ophogen je een teller laat bijhouden zonder race conditions. Een met dubbele punten gescheiden conventie in sleutelnamen, zoals gebruiker:42:naam, maakt het eenvoudig om data logisch te groeperen.
Scenario 1: een cachelaag
Het meest voorkomende gebruik van Redis is het opslaan van het resultaat van dure queries of berekeningen. De logica is altijd dezelfde: kijk eerst in Redis en geef het terug als het er is; zo niet, bereken het uit de database, schrijf het naar Redis en geef het terug. In Laravel komt dit patroon neer op één regel, want zodra je Redis als cache-driver kiest, gebruikt de hele Cache-API achter de schermen Redis:
# .env
CACHE_STORE=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
use Illuminate\Support\Facades\Cache;
$populair = Cache::remember('projecten:populair', now()->addHour(), function () {
return Project::where('is_published', true)
->orderByDesc('views')
->take(10)
->get();
});
Deze aanpak verandert een zware query die bij elke paginalading de database raakte in één die eens per uur draait. Om het op het juiste moment ongeldig te maken gebruik je Cache::forget('projecten:populair'); die regel koppelen aan model-events wanneer de inhoud verandert is de schoonste oplossing.
Scenario 2: een sessieopslag
Bij kleine projecten met één server is sessies in bestanden bewaren prima. Maar zodra meerdere servers achter een load balancer draaien, kan een gebruiker bij de ene request op server A en bij de volgende op server B terechtkomen; bestandsgebaseerde sessies loggen de gebruiker dan steeds uit. Redis lost dit bij de wortel op als een centrale, gedeelde sessieopslag:
# .env
SESSION_DRIVER=redis
Nu lezen alle servers sessies uit dezelfde Redis-instantie, zodat de gebruiker ingelogd blijft ongeacht op welke server hij belandt. Dezelfde logica geldt voor winkelmanddata, "onthoud mij"-tokens en tijdelijke gebruikersstatus. Omdat sessies van nature een TTL hebben, past de automatische vervaltijd van Redis hier perfect.
Scenario 3: queues en achtergrondtaken
Werk zoals het versturen van een e-mail, het verkleinen van een afbeelding of het genereren van een rapport mag de gebruiker niet laten wachten. De oplossing is om deze taken in een queue te plaatsen en op de achtergrond te verwerken, en Redis is hiervoor een uitstekende broker omdat de lijststructuur zich als een natuurlijke wachtrij gedraagt. In Laravel is de configuratie opnieuw eenvoudig:
# .env
QUEUE_CONNECTION=redis
// Plaats de taak in de queue — de request keert direct terug
SendWelcomeEmail::dispatch($user);
// Draai de worker op de server
php artisan queue:work redis --tries=3
Hier voegt de dispatch-aanroep de taak toe aan een Redis-lijst en rondt de request meteen af; de queue:work-worker op de achtergrond haalt taken één voor één van de lijst en voert ze uit. Met --tries=3 worden mislukte taken een paar keer opnieuw geprobeerd. Dit patroon versnelt de gebruikerservaring en spreidt tegelijk de serverbelasting over de tijd.
Aandachtspunten in productie
Redis is krachtig, maar kan verrassen bij verkeerd gebruik. Een paar praktische regels:
- Houd het geheugen in de gaten. Redis leeft in RAM; schrijf je ongelimiteerd sleutels, dan loopt het geheugen vol. Stel
maxmemoryen een evictiebeleid in (zoalsallkeys-lru). - Maak van een TTL geven een gewoonte. Cachesleutels zonder vervaltijd worden na verloop van tijd afvalophoping.
- Verhelder je behoefte aan duurzaamheid. Gebruik je het alleen als cache, dan is dataverlies onschadelijk; voor sessies en queues is
AOF-persistentie aanzetten de veilige keuze. - Vergrendel de toegang. Laat Redis niet blootgesteld aan de buitenwereld;
bind 127.0.0.1en een wachtwoord (requirepass) zijn basale beveiligingsstappen.
Veelgestelde vragen
Wat is het verschil tussen Redis en Memcached?
Memcached doet alleen eenvoudige key-value caching. Redis voegt datastructuren toe zoals lijsten, sets, hashes en sorted sets, plus persistentie, replicatie en queue/pub-sub-patronen. Voor pure wegwerpcache voldoen beide; heb je meer nodig, dan is Redis veel flexibeler.
Is Redis-data persistent of gaat het verloren bij een herstart?
Standaard leeft het in het geheugen, maar er zijn persistentie-opties. RDB maakt periodieke schijfsnapshots, terwijl AOF elke bewerking naar een logboek schrijft. Door beide te gebruiken kun je data bij een herstart terugzetten; in een puur cachescenario is ze uitzetten ook een optie.
Is Redis verplicht voor een klein project?
Nee. Op een site met één server en weinig verkeer zijn bestandscache en bestandsessies ruim voldoende. Overstappen naar Redis is zinvol zodra je meerdere servers, veel verkeer, realtime tellers of behoefte aan queues hebt.
Wil je je project versnellen met Redis? Laten we samen de knelpunten van je webapplicatie meten en de juiste Redis-opzet voor cache, sessies en queues inrichten — neem contact met me op.