Cache
Redis als Cache-Treiber verwenden
Queues
Redis als Queue-Treiber verwenden
Broadcasting
Echtzeitkommunikation über Pub/Sub
Was ist Redis
Redis ist ein schneller Open-Source-Key-Value-Store. Er unterstützt vielfältige Datenstrukturen (Strings, Hashes, Listen, Sets, sortierte Sets) und wird deshalb auch „Data Structure Server“ genannt. In Laravel wird Redis unter anderem für Folgendes verwendet:Client-Wahl
Laravel unterstützt zwei Clients: PhpRedis (PHP-Erweiterung) und Predis (PHP-Paket).In Laravel 13 ist PhpRedis der Standard-Client. In Produktion wird PhpRedis empfohlen.
In Laravel Sail ist PhpRedis bereits installiert.
Konfiguration
config/database.php
Die Redis-Konfiguration liegt im Arrayredis in config/database.php.
Umgebungsvariablen
In der.env legen Sie die Verbindungsziele fest.
TLS-/SSL-Verbindung
Für TLS-Verschlüsselung geben Sie die Optionscheme an.
Clustering
Für einen Cluster aus mehreren Redis-Servern verwenden Sie den Schlüsselclusters.
options.cluster auf redis gesetzt und nutzt das native Redis-Clustering.
Da Failover automatisch übernommen wird, ist das für Produktion empfohlen.
Um Client-Side-Sharding mit Predis zu verwenden, entfernen Sie options.cluster.
Client-Side-Sharding kümmert sich jedoch nicht um Failover und eignet sich daher nur für kurzlebige Daten wie Caches.
Predis konfigurieren
Um Predis zu nutzen, installieren Sie das Paketpredis/predis und setzen REDIS_CLIENT auf predis.
Retry-Einstellungen in Predis
Ab Predis 3.4.0 gibt es eingebaute Retry- und Backoff-Konfigurationen. Übermax_retries setzen Sie die Retry-Anzahl, über retry die Backoff-Strategie. Für retry übergeben Sie ein Array mit einem der Klassennamen NoBackoff, EqualBackoff oder ExponentialBackoff als Schlüssel.
parameters.
PhpRedis konfigurieren
PhpRedis installieren Sie über PECL (in Laravel Sail bereits vorhanden). PhpRedis unterstützt zusätzliche Optionen:name, persistent, persistent_id, prefix, read_timeout, retry_interval,
max_retries, backoff_algorithm, backoff_base, backoff_cap, timeout, context
Retries und Backoff
Legt fest, wie sich der Client bei Verbindungsfehlern erneut verbindet. Unterstützte Backoff-Algorithmen:default, decorrelated_jitter, equal_jitter, exponential, uniform, constant.
Verbindung über Unix-Socket
Läuft Redis auf demselben Server, spart ein Unix-Socket den TCP-Overhead.Serialisierung und Kompression
PhpRedis kann Serialisierung und Kompression konfigurieren.
Unterstützte Kompressionsalgorithmen:
Redis nutzen
Redis-Fassade
Über dieRedis-Fassade führen Sie jedes Redis-Kommando aus.
Sie leitet Aufrufe per Magic-Methoden an den Server weiter.
command geben Sie Kommando und Argumente explizit an.
Mehrere Verbindungen
Inconfig/database.php definieren Sie mehrere Redis-Verbindungen und wechseln mit connection().
Transaktionen
Die Methodetransaction() kapselt die Redis-Kommandos MULTI/EXEC.
Alle Kommandos innerhalb der Closure werden atomar ausgeführt.
Lua-Skripte
Miteval() führen Sie Lua-Skripte atomar aus.
Da Sie im Skript Werte lesen und schreiben können, sind Lua-Skripte flexibler als reine Transaktionen.
KEYS[1] und KEYS[2] sind die Key-Namen, ARGV[1] und folgende sind zusätzliche Argumente.
Pipelines
Über Pipelines senden Sie viele Kommandos auf einmal und sparen Netzwerk-Roundtrips.Pub/Sub
Mit den Redis-Kommandospublish und subscribe tauschen Sie Nachrichten über Kanäle aus.
Subscriber
subscribe() ist ein langlaufender Prozess und wird üblicherweise in einem Artisan-Befehl aufgerufen.
Publisher
Aus einem anderen Request oder Prozess senden Sie eine Nachricht.Wildcard-Subscriptions
Mitpsubscribe() abonnieren Sie Muster.
Zusammenfassung
Client-Wahl
Client-Wahl
- Produktion: PhpRedis (PECL-Erweiterung, hohe Performance)
- Entwicklung / Umgebungen ohne PECL: Predis (Composer-Paket)
- Laravel Sail: PhpRedis bereits enthalten
Wichtige Punkte zur Konfiguration
Wichtige Punkte zur Konfiguration
- Mehrere Redis-Verbindungen in
config/database.phpje nach Einsatz definieren (default,cacheetc.) - Im Cluster-Setup den Schlüssel
clustersverwenden - In Produktion TLS-Verbindungen und Authentifizierung einrichten
Wann welche Operation?
Wann welche Operation?