Skip to main content
Redis is een in-memory key-value store die als backend dient voor veel functionaliteit van Laravel. Van configuratie tot bewerkingen en Pub/Sub: hier leer je hoe je Redis gebruikt in Laravel.

Cache

Redis gebruiken als cachedriver

Queues

Redis gebruiken als queuedriver

Broadcasting

Realtime communicatie met Pub/Sub

Wat is Redis

Redis is een open source, razendsnelle key-value store. Redis ondersteunt uiteenlopende datastructuren zoals strings, hashes, lijsten, sets en sorted sets, en wordt daarom ook wel een datastructuurserver genoemd. In Laravel wordt Redis gebruikt voor de volgende doeleinden.

Een client kiezen

Laravel ondersteunt twee clients: PhpRedis (een PHP-extensie) en Predis (een PHP-package).
In Laravel 13 is PhpRedis de standaardclient. Voor productieomgevingen wordt PhpRedis aanbevolen. Gebruik je Laravel Sail, dan is PhpRedis al geïnstalleerd.

Configuratie

config/database.php

De Redis-configuratie beheer je in de redis array in config/database.php.

Omgevingsvariabelen

Stel de verbindingsgegevens in via .env.
Je kunt de verbinding ook in URL-vorm opgeven.

TLS/SSL-verbindingen

Wil je TLS-versleuteling gebruiken, geef dan de scheme optie op.

Clustering

Wil je meerdere Redis-servers als cluster gebruiken, gebruik dan de clusters sleutel.
Standaard staat options.cluster op redis, waardoor native Redis-clustering wordt gebruikt. Omdat dit failover automatisch afhandelt, is dit de aanbevolen configuratie voor productieomgevingen. Wil je client-side sharding gebruiken met Predis, verwijder dan options.cluster. Client-side sharding handelt failover echter niet af en is daarom alleen geschikt voor tijdelijke data zoals cache.

Predis configureren

Om Predis te gebruiken installeer je het predis/predis package en wijzig je REDIS_CLIENT naar predis.
Je kunt Predis-specifieke verbindingsparameters toevoegen.

Retry-configuratie voor Predis

Vanaf Predis 3.4.0 zijn ingebouwde retry- en backoff-instellingen beschikbaar. Met de max_retries optie stel je het aantal retries in en met de retry optie de backoff-strategie. Aan de retry optie geef je een array door met als sleutel een van de klassenamen NoBackoff, EqualBackoff of ExponentialBackoff.
Gebruik je Predis met een Redis-cluster, dan configureer je retries via de parameters optie in de clusterconfiguratie.

PhpRedis configureren

PhpRedis installeer je via PECL (in Laravel Sail is het al geïnstalleerd). PhpRedis ondersteunt de volgende extra opties: name, persistent, persistent_id, prefix, read_timeout, retry_interval, max_retries, backoff_algorithm, backoff_base, backoff_cap, timeout, context

Retry- en backoff-configuratie

Zo stel je het retrygedrag bij een mislukte verbinding in. Ondersteunde backoff-algoritmen: default, decorrelated_jitter, equal_jitter, exponential, uniform, constant

Verbinden via een Unix-socket

Draait Redis op dezelfde server, dan kun je met een Unix-socket de TCP-overhead verminderen.

Serialisatie en compressie

Bij PhpRedis kun je de serialisatie en het compressie-algoritme van opgeslagen data configureren.
Ondersteunde serializers: Ondersteunde compressie-algoritmen:

Werken met Redis

De Redis-facade

Met de Redis facade kun je elk Redis-commando uitvoeren. De facade stuurt commando’s via magic methods door naar de Redis-server.
Commando’s die argumenten verwachten geef je die argumenten gewoon als methodeargumenten mee.
Met de command methode kun je de commandonaam en argumenten ook expliciet opgeven.

Meerdere verbindingen gebruiken

Je kunt meerdere Redis-verbindingen definiëren in config/database.php en ertussen schakelen met de connection() methode.

Transacties

De transaction() methode omhult de MULTI/EXEC commando’s van Redis. Alle commando’s binnen de closure worden atomair uitgevoerd.
Binnen een transactie kun je geen waarden uit Redis ophalen. De hele closure wordt eerst uitgevoerd en daarna met EXEC in één keer verwerkt.

Lua-scripts

Met de eval() methode kun je Lua-scripts atomair uitvoeren. Dit is flexibeler dan een transactie, omdat je binnen het script waarden uit Redis kunt lezen en bijwerken.
Volgorde van de argumenten: Lua-script → aantal sleutels → sleutelnamen… → extra argumenten… KEYS[1] en KEYS[2] zijn de sleutelnamen; vanaf ARGV[1] worden de extra argumenten doorgegeven.

Pipelining

Je kunt een groot aantal commando’s in één keer versturen en zo netwerk-roundtrips verminderen.
Een pipeline verstuurt commando’s alleen gebundeld en is niet atomair. Heb je atomaire operaties nodig, gebruik dan een transactie of een Lua-script.

Pub/Sub

Met de publish / subscribe commando’s van Redis kun je berichten uitwisselen via channels.

Subscriber

subscribe() is een langlopend proces en roep je daarom aan binnen een Artisan-commando.

Publisher

Vanuit een ander request of proces verstuur je berichten.

Wildcard-subscriptions

Met psubscribe() kun je subscriptions met patroonmatching maken.

Samenvatting

  • Productieomgeving: PhpRedis (PECL-extensie, hoge prestaties)
  • Ontwikkelomgeving of wanneer installatie lastig is: Predis (Composer-package)
  • Laravel Sail: PhpRedis is standaard geïnstalleerd
  • Definieer meerdere Redis-verbindingen in config/database.php en gebruik ze per doel (default / cache, enz.)
  • Gebruik in een clusteromgeving de clusters sleutel
  • Overweeg in productie TLS-verbindingen en het instellen van inloggegevens
Laatst gewijzigd op 6 september 2026