Aktueller Standort: Startseite> Neueste Artikel> Cache -Abfrageergebnisse zum Redis/Dateisystem, um die Leistung zu optimieren

Cache -Abfrageergebnisse zum Redis/Dateisystem, um die Leistung zu optimieren

M66 2025-05-28

Die Optimierung der Datenbank-Abfrageleistung ist eine häufige Herausforderung bei der Entwicklung von PHP-Anwendungen mit hoher Leistung. Insbesondere bei der Verarbeitung großer Datenmengen kann die wiederholte Ausführung derselben Abfrage die Reaktionszeit für die Anwendung erheblich verlangsamen. Zu diesem Zeitpunkt werden zwischengespeicherte Abfragenergebnisse zu einer effektiven Optimierungsmethode. In diesem Artikel wird untersucht, wie die PHP -Anwendungsleistung optimiert wird, indem MySQLI_Result -Abfragenergebnisse für das Redis- oder das Dateisystem zwischengeführt werden.

Warum muss ich die Abfrageergebnisse zwischenspeichern?

Immer wenn eine Anwendung eine Datenbankabfrage ausführt, liest die Datenbank -Engine Daten von der Festplatte und generiert Abfrageergebnisse. Wenn diese Abfragen doppelt sind und die Daten selten ändert, ist es unnötig, jedes Mal dieselben Daten aus der Datenbank zu lesen. Caching -Technologie kann Abfragenergebnisse in Speicher (z. B. Redis) lagern oder in einem lokalen Dateisystem speichern, wodurch die Häufigkeit des Datenbankzugriffs und die Verbesserung der Anwendungsleistung verringert wird.

Verwenden Sie Redis, um MySQLi_Result -Abfragenergebnisse zu untersuchen

Redis ist ein Open Source-In-Memory-Datenspeichersystem, das häufig zum Durchschnitt von Daten verwendet wird, insbesondere zum Speichern häufig zugänglicher Daten. Im Folgenden finden Sie die grundlegenden Schritte, um die Ergebnisse von MySQLI_Result -Abfragen zugeschnitten zu werden.

1. Installieren und Konfigurieren von Redis

Zunächst müssen Sie den Redis -Dienst auf dem Server installieren. Die Installationsmethode hängt von Ihrem Betriebssystem ab. Sie können unter m66.net/redisin-installation für detaillierte Installationsschritte finden.

2. Installieren Sie die Redis -PHP -Erweiterung

Um Redis in PHP zu verwenden, müssen Sie die Redis -Erweiterung für PHP installieren. Sie können es über den folgenden Befehl installieren:

 sudo pecl install redis

Aktivieren Sie dann die Redis -Erweiterung in der Php.ini -Datei:

 extension=redis.so

3.. Stellen Sie eine Verbindung zu Redis- und Cache -Abfrageergebnissen her

Hier ist ein einfacher Beispielcode, der zeigt, wie MySQL -Abfrageergebnisse in REDIS zwischengespeichert werden:

 <?php
// verbinden MySQL Datenbank
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 检查verbinden是否成功
if ($mysqli->connect_error) {
    die('verbinden失败: ' . $mysqli->connect_error);
}

// Abfragetasten
$queryKey = 'my_query_result';

// verbinden Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Versuche von Redis Den zwischengespeicherten Daten erhalten
$cachedResult = $redis->get($queryKey);

if ($cachedResult) {
    // Wenn Redis Es gibt zwischengespeicherte Ergebnisse in,Direkt zurückkehren
    $result = unserialize($cachedResult);
    echo 'aus Redis Daten abrufen:';
} else {
    // Wenn Redis Keine zwischengespeicherten Ergebnisse,Führen Sie die Ergebnisse von Abfragen und Cache aus
    $result = $mysqli->query('SELECT * FROM my_table');
    
    // Serialisieren und Speichern von Abfragenergebnissen Redis
    $redis->set($queryKey, serialize($result), 3600); // Stellen Sie den Cache -Gültigkeitszeitraum auf 1 Stunde
    
    echo 'aus MySQL Daten abrufen:';
}

// Abfragenergebnisse drucken
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "\n";
}

// 关闭verbinden
$mysqli->close();
?>

In diesem Beispiel versuchen wir zunächst, die zwischengespeicherten Abfragenergebnisse von Redis zu erhalten. Wenn in Redis zwischengespeicherte Daten vorhanden sind, verwenden Sie sie direkt. Wenn keine zwischengespeicherten Daten vorhanden sind, führen Sie eine Abfrage aus und speichern Sie die Ergebnisse in Redis.

4. Setzen Sie die Ausfallzeit des Cache

Der Cache sollte nicht für immer existieren, insbesondere wenn sich die Daten ändern können. Um die Datendrafik zu gewährleisten, können Sie die Cache -Ablaufzeit festlegen (im obigen Beispiel beträgt es 3600 Sekunden, was 1 Stunde ist). Sie können diese Zeit entsprechend den Anforderungen der Anwendung anpassen.

Verwenden Sie das Dateisystem, um Abfragenergebnisse zu unterbrechen

Wenn Sie keine Redis verwenden möchten, können Sie auch das Dateisystem verwenden, um die Abfrageergebnisse zu speichern. Dateisystem -Cache eignet sich für Szenarien, die keine extrem hohen Zugriffsgeschwindigkeiten erfordern und einfacher bereit sind als Redis.

1. Cache -Abfrageergebnisse zur Datei

Hier ist ein einfaches Beispiel, das zeigt, wie die Ergebnisse der Abfragen in das Dateisystem zwischengespeichert werden:

 <?php
// verbinden MySQL Datenbank
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 检查verbinden是否成功
if ($mysqli->connect_error) {
    die('verbinden失败: ' . $mysqli->connect_error);
}

// Fragen Sie den zwischengespeicherten Dateipfad ab
$cacheFile = 'cache/my_query_result.cache';

// Überprüfen Sie, ob die Cache -Datei existiert und nicht abgelaufen ist
if (file_exists($cacheFile) && filemtime($cacheFile) > (time() - 3600)) {
    // Wenn缓存文件存在且未过期,Dateiinhalt lesen
    $result = unserialize(file_get_contents($cacheFile));
    echo 'aus文件缓存Daten abrufen:';
} else {
    // Wenn缓存文件不存在或已过期,Führen Sie die Ergebnisse von Abfragen und Cache aus到文件
    $result = $mysqli->query('SELECT * FROM my_table');
    
    // Serialisieren und speichern Sie die Abfrageergebnisse in einer Datei
    file_put_contents($cacheFile, serialize($result));
    echo 'aus MySQL Daten abrufen:';
}

// Abfragenergebnisse drucken
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "\n";
}

// 关闭verbinden
$mysqli->close();
?>

In diesem Beispiel serialisieren wir die Abfrageergebnisse und speichern sie in eine Datei. Wenn die Datei existiert und nicht abgelaufen ist, haben wir die zwischengespeicherten Ergebnisse direkt aus der Datei gelesen. Führen Sie ansonsten die Abfrage aus und speichern Sie die Ergebnisse in der Datei.

2. Setzen Sie die Ablaufzeit des Cache

Ähnlich wie bei Redis müssen wir bei der Verwendung von Dateisystem -Cache auch die Cache -Ablaufzeit festlegen. Im Beispielcode bestimmt die fileMtime -Funktion die letzte Änderungszeit der zwischengespeicherten Datei, um festzustellen, ob die Datenbank angefordert werden muss.

Zusammenfassen

Durch die Zwischenspeicherung der Ergebnisse von MySQLI_Result -Abfragen für Redis- oder Dateisysteme kann die Leistung von PHP -Anwendungen erheblich verbessert werden und die Belastung der Datenbank kann reduziert werden. Redis eignet sich besser für Szenarien, in denen häufig Daten zugegriffen werden, während der Dateisystem -Cache für Anwendungen mit weniger Zugriffsfrequenz geeignet ist. Welche Caching -Methode zu wählen ist, hängt von der Anforderungen und der Bereitstellungsumgebung Ihrer Anwendung ab.

Unabhängig davon, ob Sie Redis- oder Dateisystem -Cache wählen, müssen Sie eine angemessene Cache -Ausfallzeit entsprechend der tatsächlichen Situation festlegen, um die Aktualität und Genauigkeit der Daten sicherzustellen.