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 deredis array in config/database.php.
Omgevingsvariabelen
Stel de verbindingsgegevens in via.env.
TLS/SSL-verbindingen
Wil je TLS-versleuteling gebruiken, geef dan descheme optie op.
Clustering
Wil je meerdere Redis-servers als cluster gebruiken, gebruik dan declusters sleutel.
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 hetpredis/predis package en wijzig je REDIS_CLIENT naar predis.
Retry-configuratie voor Predis
Vanaf Predis 3.4.0 zijn ingebouwde retry- en backoff-instellingen beschikbaar. Met demax_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.
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 compressie-algoritmen:
Werken met Redis
De Redis-facade
Met deRedis facade kun je elk Redis-commando uitvoeren.
De facade stuurt commando’s via magic methods door naar de Redis-server.
command methode kun je de commandonaam en argumenten ook expliciet opgeven.
Meerdere verbindingen gebruiken
Je kunt meerdere Redis-verbindingen definiëren inconfig/database.php en ertussen schakelen met de connection() methode.
Transacties
Detransaction() methode omhult de MULTI/EXEC commando’s van Redis.
Alle commando’s binnen de closure worden atomair uitgevoerd.
Lua-scripts
Met deeval() 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.
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.Pub/Sub
Met depublish / 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
Metpsubscribe() kun je subscriptions met patroonmatching maken.
Samenvatting
Een client kiezen
Een client kiezen
- Productieomgeving: PhpRedis (PECL-extensie, hoge prestaties)
- Ontwikkelomgeving of wanneer installatie lastig is: Predis (Composer-package)
- Laravel Sail: PhpRedis is standaard geïnstalleerd
Aandachtspunten bij de verbindingsconfiguratie
Aandachtspunten bij de verbindingsconfiguratie
- Definieer meerdere Redis-verbindingen in
config/database.phpen gebruik ze per doel (default/cache, enz.) - Gebruik in een clusteromgeving de
clusterssleutel - Overweeg in productie TLS-verbindingen en het instellen van inloggegevens
Welke bewerking gebruik je wanneer
Welke bewerking gebruik je wanneer