Redis verwendet eine speicherbasierte Schlüssel-/Wertdatenbank, die ein Einzelprozess-Single-Thread-Modell verwendet. Die offiziell bereitgestellten Daten können 100.000 erreichen + QPS (Abfragen pro Sekunde). Warum ist Redis so schnell? Ist es so effizient?
1. Die meisten Anfragen basieren vollständig auf dem Speicher und sind reine Speicheroperationen, die sehr schnell sind. Die Daten werden im Speicher gespeichert, ähnlich wie bei HashMap. Der Vorteil von HashMap besteht darin, dass die Zeitkomplexität von Suche und Betrieb O(1) ist Einfach. Die Datenstruktur in Redis ist speziell entwickelt. Es verwendet einen einzelnen Thread, um unnötige Kontextwechsel und Konkurrenzbedingungen zu vermeiden CPU, und es besteht keine Notwendigkeit, verschiedene Sperren zu berücksichtigen, und es gibt keinen Leistungsverbrauch durch mögliche Deadlocks.
4 , nicht blockierendes IO;
5. Die zugrunde liegenden Modelle sind unterschiedlich, die zugrunde liegenden Implementierungsmethoden und die Anwendungsprotokolle für die Kommunikation mit dem Client sind unterschiedlich, da der allgemeine Systemaufruf erfolgt Systemfunktionen, die eine gewisse Zeit verschwenden.
Die oben genannten Punkte sind relativ einfach zu verstehen. Im Folgenden werden wir kurz auf das Mehrkanal-I/O-Multiplexing-Modell eingehen 🎜>Das Mehrkanal-E/A-Multiplex-Modell besteht darin, mithilfe von Select, Poll und Epoll die E/A-Ereignisse mehrerer Streams gleichzeitig zu überwachen. Im Leerlauf blockieren sie den aktuellen Thread Wenn mehr Streams E/A-Ereignisse haben, werden sie aus dem blockierten Zustand austreten. Dann fragt das Programm alle Streams ab (epoll fragt nur die Streams ab, die tatsächlich Ereignisse ausgegeben haben) und verarbeitet nur die bereiten Streams nacheinander vermeidet viele unnötige Operationen.
Hier bezieht sich „mehrfach“ auf mehrere Netzwerkverbindungen und „Wiederverwendung“ auf die Wiederverwendung desselben Threads. Durch die Verwendung der Mehrkanal-E/A-Multiplexing-Technologie kann ein einzelner Thread mehrere Verbindungsanforderungen effizient verarbeiten (wodurch der Zeitverbrauch von Netzwerk-E/A minimiert wird), und Redis verarbeitet Daten im Speicher sehr schnell, was bedeutet, dass Vorgänge im Speicher nicht ausgeführt werden wird zu einem Engpass, der die Leistung von Redis beeinträchtigt. Die oben genannten Punkte tragen hauptsächlich zum hohen Durchsatz von Redis bei.
Das obige ist der detaillierte Inhalt vonWarum ist Redis Single Thread effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!