Redis-Client für PHP: Predis — Installation, Verbindung, Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Predis – flexibler Redis-Client für PHP

\n\n

Redis ist ein Hochleistungs-Datenspeicher vom Typ „Schlüssel-Wert", der häufig für Caching, Sitzungen, Warteschlangen und Echtzeitanwendungen verwendet wird. Für die Arbeit mit Redis aus PHP heraus gibt es mehrere Bibliotheken, und eine der beliebtesten ist Predis. Es handelt sich um eine reine PHP-Implementierung des Clients, die keine Installation zusätzlicher Erweiterungen erfordert (im Gegensatz zu phpredis). Predis unterstützt alle grundlegenden Redis-Befehle, Clustering, Replikation, Pub/Sub und die Arbeit mit Transaktionen.

\n\n

Installation von Predis über Composer

\n\n

Die Installation von Predis erfolgt auf dem Standardweg über Composer. Stellen Sie sicher, dass Composer in Ihrem Projekt installiert ist, und führen Sie den Befehl aus:

\n\n
composer require predis/predis
\n\n

Nach der Installation erscheint die Abhängigkeit in der Datei composer.json und die Bibliothek ist im Ordner vendor verfügbar.

\n\n

Verbindung zum Redis-Server

\n\n

Erstellen Sie für den Einstieg eine Instanz des Predis-Clients. Standardmäßig verbindet er sich mit 127.0.0.1:6379, Sie können aber auch eigene Parameter angeben.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Predis\\Client;\n\n// Verbindung mit Standardparametern\n$client = new Client();\n\n// Oder mit expliziter Angabe von Host und Port\n$client = new Client([\n    'scheme' => 'tcp',\n    'host'   => '127.0.0.1',\n    'port'   => 6379,\n]);\n\n// Wenn ein Passwort erforderlich ist\n$client = new Client([\n    'host' => 'localhost',\n    'port' => 6379,\n    'password' => 'my_secret_password',\n]);\n?>
\n\n

Wenn Redis auf einem entfernten Server läuft oder einen UNIX-Socket verwendet, ändern Sie einfach die entsprechenden Parameter.

\n\n

Grundlegende Datenoperationen

\n\n

Predis unterstützt alle standardmäßigen Redis-Datentypen: Strings, Hashes, Listen, Mengen und sortierte Mengen. Sehen wir uns einige grundlegende Beispiele an.

\n\n

Arbeiten mit Strings

\n\n
<?php\n// Wert setzen\n$client->set('user:100:name', 'Ivan Petrov');\n\n// Wert abrufen\n$name = $client->get('user:100:name');\necho $name; // Ivan Petrov\n\n// Existenz eines Schlüssels prüfen\nif ($client->exists('user:100:name')) {\n    echo 'Schlüssel existiert';\n}\n\n// Schlüssel löschen\n$client->del(['user:100:name']);\n?>
\n\n

Arbeiten mit Hashes

\n\n

Hashes eignen sich gut zum Speichern von Objekten – zum Beispiel von Benutzerdaten.

\n\n
<?php\n// Hash-Felder setzen\n$client->hmset('user:100', [\n    'name'  => 'Anna Smirnova',\n    'email' => 'anna@example.com',\n    'age'   => 28,\n]);\n\n// Ein Feld abrufen\n$email = $client->hget('user:100', 'email');\n\n// Alle Felder abrufen\n$userData = $client->hgetall('user:100');\nprint_r($userData);\n\n// Numerisches Feld erhöhen\n$client->hincrby('user:100', 'age', 1);\n?>
\n\n

Arbeiten mit Listen

\n\n

Redis-Listen eignen sich ideal für Warteschlangen und Protokolle.

\n\n
<?php\n// Elemente am Anfang der Liste hinzufügen (Stapel)\n$client->lpush('tasks', 'task1', 'task2', 'task3');\n\n// Am Ende der Liste hinzufügen (Warteschlange)\n$client->rpush('tasks', 'task4');\n\n// Alle Elemente der Liste abrufen\n$allTasks = $client->lrange('tasks', 0, -1);\nprint_r($allTasks);\n\n// Erstes Element entnehmen\n$first = $client->lpop('tasks');\necho $first; // task3\n?>
\n\n

Festlegen der Lebensdauer eines Schlüssels (TTL)

\n\n

Eine der leistungsstarken Funktionen von Redis ist das automatische Löschen von Schlüsseln nach einer bestimmten Zeit. Dies wird häufig für Caching verwendet.

\n\n
<?php\n// Schlüssel mit TTL von 60 Sekunden setzen\n$client->setex('cache:page', 60, 'HTML-Inhalt der Seite');\n\n// Oder für einen bereits vorhandenen Schlüssel\n$client->expire('cache:page', 120);\n\n// Verbleibende Lebensdauer prüfen\n$ttl = $client->ttl('cache:page');\necho "Noch $ttl Sekunden übrig";\n?>
\n\n

Arbeiten mit Transaktionen

\n\n

Predis unterstützt Multi-Befehle (Trans

Empfehlungen