Caching in PHP: Redis, Memcached und integrierte Lösungen: von A bis Z

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

Einleitung: Warum Caching die Grundlage einer schnellen PHP-Anwendung ist



Jeder PHP-Entwickler stößt früher oder später auf Leistungsprobleme. Wenn die Datenbank langsamer wird und Seiten 3-5 Sekunden zum Laden brauchen, kommt einem als Erstes Caching in den Sinn. Es ist nicht nur "Daten irgendwo speichern", es ist eine ganze Philosophie der Optimierung.



In diesem Artikel werden wir alle gängigen Ansätze zum Caching in PHP durchgehen: vom einfachen Datei-Cache bis hin zu industriellen Lösungen mit Redis und Memcached. Sie erfahren, wie Sie das richtige Werkzeug auswählen und typische Fehler vermeiden. Los geht's!



1. Integrierte Caching-Mechanismen in PHP



1.1. Opcode-Caching: OPcache



Bevor wir über externe Speicher sprechen, sollte man bedenken, dass PHP selbst seinen Code cachen kann. Der OPcache-Mechanismus speichert kompilierte Skripte im Arbeitsspeicher und erspart PHP so das ständige Parsen und Kompilieren von Dateien.



Aktivierung von OPcache in der php.ini:



opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=10000opcache.revalidate_freq=2


Dies ist die erste Verteidigungslinie. Ohne OPcache ist jedes andere Caching weniger effektiv.



1.2. APCu – Benutzer-Cache im Arbeitsspeicher



APCu (Alternative PHP Cache) ist eine Erweiterung zum Speichern beliebiger Daten im gemeinsamen Speicher des PHP-Prozesses. Ideal für kleinere Projekte, bei denen kein verteiltes Caching erforderlich ist.



Beispiel für die Arbeit mit APCu:



<?php// Daten für 5 Minuten speichernapcu_store('my_key', ['data' => 'value'], 300);

// Daten lesen$data = apcu_fetch('my_key');if ($data === false) { echo "Cache nicht gefunden, neu generieren";}

// Schlüssel löschenapcu_delete('my_key');?>


Vorteile: blitzschnelle Geschwindigkeit, Einfachheit. Nachteile: Daten leben nur innerhalb eines Servers.



2. Memcached: Einfachheit und Geschwindigkeit



2.1. Was ist Memcached und wozu wird es benötigt



Memcached ist ein verteiltes Caching-System im Arbeitsspeicher. Es wurde entwickelt, um dynamische Webanwendungen zu beschleunigen, indem die Last auf Datenbanken reduziert wird. Im Gegensatz zu APCu läuft Memcached als separater Server, mit dem sich von verschiedenen PHP-Instanzen aus verbunden werden kann.



2.2. Installation und Verbindung von Memcached



Installieren Sie zuerst den Memcached-Server:



sudo apt install memcachedsudo systemctl start memcached


Installieren Sie dann die PHP-Erweiterung:



sudo pecl install memcached


Jetzt können Sie mit dem Cache arbeiten:



<?php$memcached = new Memcached();$memcached->addServer('localhost', 11211);

// Für 10 Minuten speichern$memcached->set('user_123', ['name' => 'Ivan', 'email' => 'ivan@example.com'], 600);

// Lesen$user = $memcached->get('user_123');if ($user === false) { // Aus der Datenbank laden}?>


2.3. Wann man Memcached wählen sollte



  • Wenn ein einfacher Key-Value-Speicher benötigt wird
  • Wenn Daten eine kurze Lebensdauer haben (Sitzungen, temporäre Daten)
  • Wenn keine Persistenz erforderlich ist (Memcached speichert keine Daten auf der Festplatte)


3. Redis: Ein leistungsstarkes Werkzeug für komplexe Szenarien



3.1. Warum ist Redis besser als Memcached?



Redis ist nicht nur ein Cache, sondern eine vollwertige In-Memory-Datenbank mit Unterstützung für komplexe Datenstrukturen: Listen, Mengen, Hashes, Bitmaps. Im Gegensatz zu Memcached unterstützt Redis:



  • Persistenz – Daten gehen bei einem Neustart nicht verloren
  • Transaktionen und Lua-Skripte
  • Pub/Sub für den Nachrichtenaustausch
  • Replikation und Clusterbildung


3.2. Beispiele für die Arbeit mit Redis in PHP



Für die Arbeit mit Redis verwenden

Blogs

Buchempfehlungen