Heim  >  Artikel  >  Datenbank  >  So verstehen Sie den einzelnen Redis-Thread

So verstehen Sie den einzelnen Redis-Thread

(*-*)浩
(*-*)浩Original
2019-11-28 09:13:081904Durchsuche

So verstehen Sie den einzelnen Redis-Thread

Redis kommuniziert über Sockets. Mit anderen Worten: Der Redis-Dienst ist mit mehreren Redis-Client-Verbindungen gleichzeitig konfrontiert .-Anfrage, und der Redis-Dienst selbst wird in einem einzelnen Thread ausgeführt. (Empfohlenes Lernen: Redis-Video-Tutorial )

Angenommen, es gibt jetzt fünf Clients von A, B, C, D, E. Der erste kommt, dann B, C, D und E kommen nacheinander an. Zu diesem Zeitpunkt beginnt der Redis-Server mit der Verarbeitung der A-Anfrage. Es dauert 30 Sekunden, um die Verbindung herzustellen, 10 Sekunden, um die Anforderungsdaten abzurufen, und dann 0,1 Sekunden, um die Daten zu verarbeiten und zu senden zurück zu Es dauert auf der Clientseite 5 Sekunden und insgesamt etwa 45 Sekunden.

Mit anderen Worten, die nächste B-Anfrage muss 45 Sekunden warten. Beachten Sie, dass diese fünf Anfragen fast gleichzeitig erfolgen können, da der Socket mehrere Anfragen gleichzeitig verarbeiten kann Phase ist vernachlässigbar, aber in der zweiten Phase muss der Server nichts tun und 10 Sekunden warten, was für die CPU und den Client unerträglich ist.

Die Single-Thread-Effizienz ist also sehr, sehr gering, aber gerade wegen dieser ähnlichen Probleme läuft Redis Single-Thread in der Natur nicht so. Als nächstes werden wir den echten Single-Thread-Betriebsmodus von Redis diskutieren.


Die Verbindung zwischen dem Client und dem Server wird über den Socket hergestellt. Es können mehrere Verbindungen gleichzeitig hergestellt werden (dies sollte Multi-Thread/Multi-Prozess sein). , Die von redis hergestellte Verbindung Sie wissen (Warum Sie wissen, gehen Sie zur Socket-Programmierung und betonen Sie erneut, dass die Grundlagen sehr wichtig sind), Dann erkennt Redis anhand der Daten, welche Verbindung die Anforderung des Clients empfangen hat auf diesen etablierten Verbindungen.

Hinweis: Es geht nicht darum, zu erkennen, welche Verbindung hergestellt wurde, sondern darum, welche Verbindung die Anforderungsdaten empfangen hat. Die Erkennungsaktion hier ist der Start eines einzelnen Threads Erkennt, basiert es auf den empfangenen Daten, startet die Datenverarbeitungsphase, gibt dann die Daten zurück und erkennt dann weiterhin die nächste Netzwerkverbindung, die die angeforderten Daten empfangen hat.

Beachten Sie, dass der gesamte Prozess von der Erkennung über die Datenverarbeitung bis zur Datenrückgabe Single-Threaded ist.

Dies sollte der sogenannte Redis-Single-Thread sein. Was die innere Komplexität angeht, müssen wir uns nicht darum kümmern, den Prozess zu verstehen und die Prinzipien strikt einzuhalten, aber wir können nicht alle inneren Organe ausgraben.

Von der Erkennung der Netzwerkverbindung, die die Anforderungsdaten akzeptiert, bis zur endgültigen Datenrückgabe benötigt der Server nur 5,1 Sekunden, nachdem ich die Daten N-mal vergrößert habe viel kürzer als das, vielleicht ist es ein Zehntausendstel der N-Zeit von 5,1.

Warum sagen Sie das? Da die Daten im lokalen Speicher verarbeitet werden, können Sie sich vorstellen, wie schnell sie sind. Obwohl die endgültigen zurückgegebenen Daten das Netzwerk betreffen, wurde die Netzwerkverbindung hergestellt, und die Geschwindigkeit ist es auch sehr, sehr schnell, nur etwas langsamer als die Datenverarbeitungsphase. Daher besteht eigentlich kein Grund zur Sorge um die Effizienz der Single-Threaded-Methode.

Weitere technische Artikel zum Thema Redis finden Sie in der Spalte

Redis Getting Started Tutorial.

Das obige ist der detaillierte Inhalt vonSo verstehen Sie den einzelnen Redis-Thread. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn