Da Webanwendungen immer komplexer werden, ist die Leistung zu einem kritischen Thema geworden. In vielen Anwendungen gehören Datenbankabfragen zu den zeitaufwändigsten Vorgängen. Um das häufige Lesen von Daten aus der Datenbank zu vermeiden, können Sie ein Caching-System verwenden, um häufig gelesene Daten für einen schnellen Zugriff im Speicher zu speichern. In der PHP-Entwicklung ist die Verwendung von Memcached für verteiltes Caching eine äußerst gängige Praxis. In diesem Artikel stellen wir vor, wie man Memcached für verteiltes Caching verwendet.
Memcached ist ein leistungsstarkes verteiltes Speicher-Caching-System, das zwischengespeicherte Daten zwischen mehreren Servern teilen kann. Genauer gesagt ist Memcached ein Schlüsselwert-Cache-System, das Daten im Speicher speichert. Es ermöglicht Entwicklern, alle Arten von Daten in ihren Anwendungen zwischenzuspeichern, einschließlich HTML-Seiten, Datenbankabfrageergebnissen und sogar vollständigen Webanwendungen.
Bevor wir Memcached verwenden, müssen wir es zuerst installieren. Auf Linux-Systemen können Sie es mit dem folgenden Befehl installieren:
sudo apt-get install memcached sudo apt-get install php-memcached
Nach Abschluss der Installation müssen Sie den Memcached-Dienst starten, der mit dem folgenden Befehl gestartet werden kann:
sudo service memcached start
Als nächstes müssen wir Memcached konfigurieren Erweiterungsmodul in PHP. Auf Ubuntu-Systemen kann es durch Bearbeiten der folgenden Datei konfiguriert werden:
sudo vi /etc/php/7.0/mods-available/memcached.ini
Fügen Sie den folgenden Inhalt in die Datei ein:
extension=memcached.so
Speichern und schließen Sie die Datei und starten Sie den Apache-Server neu:
sudo service apache2 restart
Jetzt haben Sie Memcached erfolgreich installiert und konfiguriert .
Als nächstes zeigen wir, wie man Memcached für verteiltes Caching verwendet. Zuerst müssen wir eine Memcached-Instanz erstellen. Sie können den folgenden Code verwenden:
$mc = new Memcached(); $mc->addServer("127.0.0.1", 11211); // 添加一个Memcached服务器
Im obigen Code haben wir eine Memcached-Instanz erstellt und einen Memcached-Server hinzugefügt. Der erste Parameter der Funktion addServer() ist die IP-Adresse des Memcached-Servers und der zweite Parameter ist die Portnummer (Standard ist 11211).
Als nächstes schauen wir uns ein konkretes Beispiel für das Zwischenspeichern von Datenbankabfrageergebnissen in Memcached an. Wir gehen davon aus, dass wir eine Funktion fetchUserById() definiert haben, die eine Benutzer-ID als Parameter akzeptiert und die Informationen des Benutzers zurückgibt. Hier ist der Code, um dies zu erreichen:
function fetchUserById($uid) { // 检查缓存中是否存在该用户信息 $mc = new Memcached(); $mc->addServer("127.0.0.1", 11211); $key = "user_".$uid; $data = $mc->get($key); if (!$data) { // 如果缓存中不存在该用户信息,则从数据库中查询 $pdo = new PDO("mysql:host=127.0.0.1;dbname=mydb","root",""); $stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id"); $stmt->bindParam(":id", $uid); $stmt->execute(); $data = $stmt->fetch(PDO::FETCH_ASSOC); // 将查询结果缓存到Memcached中 $mc->set($key, $data, 3600); } return $data; }
Im obigen Code verwenden wir die Benutzer-ID als Schlüsselnamen des Memcached-Cache. Wenn der Schlüsselname im Cache vorhanden ist, werden die zwischengespeicherten Daten direkt zurückgegeben. Andernfalls fragen wir die Daten aus der Datenbank ab und speichern die Abfrageergebnisse in Memcached, damit die nächste Abfrage aus dem Cache gelesen werden kann.
In tatsächlichen Anwendungen hat Memcached auch viele andere Verwendungszwecke, wie z. B. Seiten-Caching, Sitzungsdaten-Caching usw. Die Verwendung von Memcached kann die Geschwindigkeit und Leistung von Webanwendungen erheblich verbessern, gleichzeitig müssen jedoch weitere Probleme berücksichtigt werden, z. B. Cache-Aktualisierungen, Cache-Ungültigmachung, Cache-Penetration usw. Daher müssen wir bei der Verwendung von Memcached für verteiltes Caching den Implementierungsprozess und die Anwendungsszenarien berücksichtigen, um die Effizienz zu verbessern.
Das obige ist der detaillierte Inhalt vonWie verwende ich Memcache für verteiltes Caching in der PHP-Entwicklung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!