redis beschleunigt vorhandene Anwendungen: Cache -Abfragen und reduziert den Serverlast
Kernpunkte:
- Redis beschleunigt vorhandene Anwendungen effektiv durch Zwischenspeichern von Abfrageergebnissen, wodurch der Serverdruck verringert wird. Es speichert Abfrageergebnisse für eine bestimmte Zeit (z. B. 24 Stunden) und dann diese Ergebnisse wiederverwendet, wodurch die Anwendungsgeschwindigkeit signifikant verbessert wird.
- Die Installation von Redis kann über den Betriebssystempaketmanager oder manuell abgeschlossen werden. Der Installationsprozess umfasst die Vermeidung g?ngiger Warnungen und die Sicherstellung, dass Redis nach dem Neustart des Servers automatisch beginnt.
- Die Predis -Bibliothek arbeitet mit Redis zusammen, um eine Speicher -Cache -Ebene für Anwendungen bereitzustellen. Dieser Prozess beinhaltet die überprüfung, ob die Ergebnisse der aktuellen Abfrage im Cache vorhanden sind, die Ergebnisse abrufen, wenn sie nicht vorhanden sind, und sie für die zukünftige Verwendung zu speichern.
- Um die Leistung weiter zu verbessern, empfiehlt Predis die Installation von PHPIREDIS, eine PHP -Erweiterung, die den Overhead von Redis -Protokoll -Serialisierung und -Versparung verringert und die Redis -Installation schneller macht.
Wir haben zuvor die Grundlagen von Redis in PHP eingeführt, aber jetzt ist es Zeit, einen praktischen Anwendungsfall einzuführen. In diesem Tutorial fügen wir es der bereitgestellten Anwendung hinzu, um die Anwendungsgeschwindigkeit zu verbessern.
Sie k?nnen Version 0.6 der Anwendung klonen, um einfach zu lernen.
Problembeschreibung:
Bevor wir die L?sung anwenden, müssen wir die Problemdefinition klarstellen.
Die fragliche Anwendung greift auf die API von Diffbot zu und fragt den Datensatz bei der Ausführung einer Abfrage an. Gehen Sie dann zurück und zeigen Sie die Teilmenge an. Dies kann ungef?hr 5 Sekunden dauern, je nachdem, wie besch?ftigt der Diffbot -Server ist. Obwohl sich dies zweifellos verbessern wird, wenn sie ihre Rechenleistung erweitern, w?re es gro?artig, wenn die Abfragergebnisse, die nach 24 Stunden ausgeführt wurden, für 24 Stunden erinnert und wiederverwendet würden, da das Set selbst nur so h?ufig aktualisiert wird.
Sie denken vielleicht: "Was sind die Vorteile eines einzelnen Abfrages?"
In der Tat zeigen Untersuchungen, dass Menschen h?ufig nach demselben Inhalt suchen (popul?r? "React" -Anfragen pl?tzlich zunehmen) und sie werden auch nach bekannten Autoren (oder sich selbst) suchen. Angesichts der Tatsache, dass die Implementierung dieses Cache fast nichts kostet (tats?chlich durch Reduzieren der Kosten durch Reduzierung des Serverdrucks), ist dies ein einfacher Gewinn hinzugefügt, auch wenn er nicht so h?ufig verwendet wird, wie Sie m?chten. Kein Grund, es nicht hinzuzufügen - es kann nur zu unseren Gunsten sein. Wenn wir das Problem eindeutig definieren, befassen wir uns mit den Voraussetzungen.
Installation:
Zun?chst müssen wir Redis in die Entwicklungs- und Produktionsumgebung einbauen (beachten Sie, dass Redis, wenn Sie Homestead in der lokalen Entwicklung verwenden, bereits installiert ist, jedoch zum Zeitpunkt des Schreibens, Version 3.0.1).
wir k?nnen dies über den Paketmanager des Betriebssystems tun:
sudo apt-get install redis-server
Dies ist die einfachste und empfohlene Methode, aber wir k?nnen sie auch von Grund auf neu installieren und manuell konfigurieren. Nach den Anweisungen auf ihrer Website kann dies durch:
erfolgensudo apt-get install gcc make build-essential tcl wget http://download.redis.io/releases/redis-3.0.2.tar.gz tar xzf redis-3.0.2.tar.gz cd redis-3.0.2 make make test sudo make install
Wenn Sie auf einen t?dlichen Fehler sto?en, der Jemalloc.h nach dem Laufen erw?hnt, machen Sie einfach DistClean und rennen Sie erneut. Der Befehl make test ist optional, aber hilfreich.
Hinweis: Wenn Sie diesen Artikel lesen und Version 3.0.2 nicht mehr der neueste ist, passen Sie einfach den Befehl an die neueste Versionsnummer an.
Um einige h?ufige Warnungen zu verhindern (zumindest bei Ubuntu), führen wir auch vorbeugend den folgenden Befehl aus:
sudo sh -c 'echo "vm.overcommit_memory=1" >> /etc/sysctl.conf' sudo sh -c 'echo "net.core.somaxconn=65535" >> /etc/sysctl.conf' sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
Wir stellen auch sicher, dass der letzte Befehl zu /etc/rc.local addiert, direkt über dem Exit 0, damit er jedes Mal erneut ausgezeichnet werden kann, wenn der Server neu gestartet wird. Schlie?lich k?nnen wir den Server mit dem Sudo-Neustart neu starten und überprüfen, ob Redis ordnungsgem?? ausgeführt wird, indem Sudo Redis-Server ausgeführt wird.
Schlie?lich müssen wir sicherstellen, dass Redis nach dem Neustart des Servers automatisch beginnt. Daher werden wir dies gem?? den offiziellen Anweisungen tun.
Predis:
Wir haben die Grundlagen von Predis bereits zuvor behandelt, und in diesem Fall werden wir sie auch verwenden. Installieren wir es mit dem folgenden Befehl:
composer require predis/predis
Nehmen wir als n?chstes an, dass wir die oben genannte Einführung in Predis gemeistert haben.
Da dieser Beitrag ver?ffentlicht wurde, wurden einige geringfügige Unterschiede eingeführt (z. B. der übergang zu Namespaces), aber die API, die wir verwenden müssen, ist ungef?hr gleich.
Implementierung:
Um Redis in unserer Anwendung zu verwenden, müssen wir die folgenden Schritte ausführen:
- Stellen Sie anzeigen, ob die aktuellen Abfragergebnisse im Cache vorhanden sind
- Wenn es existiert, erhalten Sie das Ergebnis
- Wenn es nicht existiert, erhalten Sie das Ergebnis, speichern Sie das Ergebnis und leiten Sie das Ergebnis an den Rest der Anwendung weiter
Daher ist die Implementierung sehr einfach: Unter der überprüfung "Formular Senden" (die nach dem Parameter "Suche") werden wir den Predis -Client instanziieren, den MD5 -Hash der ausgeführten Suchabfrage berechnen und dann überprüfen Wenn seine Ergebnisse überprüft werden. Wenn falsch, wird der vorherige Prozess fortgesetzt, aber nicht:
$result = ... $info = ...
endet, serialisiert aber das Ergebnis direkt und speichert es auf Cache. Au?erhalb des Codeblocks erhalten wir die Ergebnisse aus dem Cache, und der Fluss der Anwendung wird wie gewohnt fortgesetzt. Daher sieht der ge?nderte Teil in der Datei index.php so aus:
// 檢查是否提交了搜索表單 if (isset($queryParams['search'])) { $redis = new Client(); $hash = md5($_SERVER['QUERY_STRING']); if (!$redis->get($hash . '-results')) { $diffbot = new Diffbot(DIFFBOT_TOKEN); // 構(gòu)建搜索字符串 $searchHelper = new SearchHelper(); $string = (isset($queryParams['q']) && !empty($queryParams['q'])) ? $queryParams['q'] : $searchHelper->stringFromParams($queryParams); // 基礎(chǔ)設(shè)置 $search = $diffbot ->search($string) ->setCol('sp_search') ->setStart(($queryParams['page'] - 1) * $resultsPerPage) ->setNum($resultsPerPage); $redis->set($hash . '-results', serialize($search->call())); $redis->expire($hash . '-results', 86400); $redis->set($hash . '-info', serialize($search->call(true))); $redis->expire($hash . '-info', 86400); } $results = unserialize($redis->get($hash . '-results')); $info = unserialize($redis->get($hash . '-info')); }Nach dem Test k?nnen wir feststellen, dass es gut funktioniert. Wenn wir die Seite aktualisieren oder eine andere Abfrage ausführen und dann zur vorherigen Abfrage zurückkehren, ist die einmal ausgeführte Abfrage sofort. Schlie?lich k?nnen wir addieren, addieren und auf die Bereitstellung dr?ngen:
git add -A git commit -m "Added Redis cache [deploy:production]" git push origin masterDas ist es! Die neueste Version unserer Anwendung ist jetzt verfügbar und Redis stellt zwischengespeicherte Daten bereit.
Hinweis: Wenn Sie wissen m?chten, wie wir mit einem einzigen Komitee vom Entwicklungsmodus zur Produktionsbereitstellung wechseln m?chten, sollten Sie diesen Artikel lesen.
Feinabstimmung:
Um die Leistung weiter zu verbessern, empfiehlt Predis, PHPIREDIS zu installieren, eine PHP -Erweiterung für " den Overhead der REDIS -Protokollserialisierung und das Parsing ". Da wir die vollst?ndige Kontrolle über den Server haben, warum tun Sie dies nicht?
sudo apt-get install redis-server
Dies installiert die Voraussetzungen und erm?glicht Erweiterungen. Jetzt müssen wir nur noch den Predis -Client so konfigurieren, dass die Phpiredis -Verbindung verwendet wird. Wir müssen ersetzen:
sudo apt-get install gcc make build-essential tcl wget http://download.redis.io/releases/redis-3.0.2.tar.gz tar xzf redis-3.0.2.tar.gz cd redis-3.0.2 make make test sudo make install
ist:
sudo sh -c 'echo "vm.overcommit_memory=1" >> /etc/sysctl.conf' sudo sh -c 'echo "net.core.somaxconn=65535" >> /etc/sysctl.conf' sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
Das ist es! Unsere Redis -Installation ist jetzt schneller!
Schlussfolgerung:
In diesem Tutorial verwenden wir die Redis- und Predis -Bibliotheken in Kombination, um die bereitgestellten Anwendungen schneller aussehen zu lassen. Anstatt zu und von seiner Quelle zu wechseln, verwenden wir den verfügbaren RAM des Digitalocean -Tr?pfchens, um die Ergebnisse der Abfrage einmal am Tag zu speichern und diese Ergebnisse dann aus dem Cache zurückzugeben. Dies bedeutet, dass die Ergebnisse nicht immer auf dem neuesten Stand sind, aber laut diesem Beitrag werden die Ergebnisse selbst nicht h?ufiger aktualisiert.
In diesem Tutorial wird hoffentlich angezeigt, wie einfach es ist, Ihrer Anwendung eine Speicher -Cache -Ebene hinzuzufügen, und es ist sehr nützlich, wenn Sie die Ladezeit verkürzen und die Serverkosten reduzieren müssen.
Irgendwelche anderen Vorschl?ge? F?higkeit? Kommentar? Bitte hinterlassen Sie unten eine Nachricht!
(Der FAQ-Teil wird hier weggelassen, da der Inhalt des FAQ-Teils mit dem Hauptinhalt des Artikels dupliziert wird, was redundante Informationen sind.
Das obige ist der detaillierte Inhalt vonBeschleunigung vorhandener Apps mit einem Redis -Cache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren
