Heim >Datenbank >Redis >Warum wählt Redis Single Thread?

Warum wählt Redis Single Thread?

PHPz
PHPznach vorne
2023-05-30 13:01:331896Durchsuche

1. Redis-Versionsiteration

Warum wählt Redis Single Thread?

Redis2.6, unterstützt Lua-Skripte;

Redis4.0, hybride Persistenz, asynchrones Löschen mit mehreren Threads; Code-Rekonstruktion;

Redis6.0, Multi-Threaded IO;

Redis7.0, Funktion, Multi-Part-AOF

2.

1. Redis verwendet ein Single-Thread-Modell, um die Entwicklung und Wartung zu erleichtern Hauptsächlich liegt der Leistungsengpass im Speicher und im Netzwerk, nicht in der CPU.

3 Threading wird beim Löschen von Daten und beim Beibehalten von Daten verwendet.

Der Leistungsengpass von Redis ist hauptsächlich Netzwerk-E/A. Daher werden ab Redis 6.0 mehrere E/A-Threads zur Verarbeitung von Netzwerkanforderungen verwendet, um die Parallelität der Netzwerkanforderungsverarbeitung zu verbessern.

4. Wie vervollständigen der Redis-Hauptthread und der IO-Thread die Anfrage?

1. Der Server und der Client stellen eine Socket-Verbindung her.

Der Hauptthread ist für den Verbindungsaufbau und das Einfügen des Sockets in die globale Warteschlange verantwortlich. Der Hauptthread weist die Socket-Verbindung durch Abfragen zu .

2. Der E/A-Thread liest und analysiert die Anfrage. Sobald der Hauptthread den Socket dem E/A-Thread zuweist, wechselt er in den Blockierungsstatus und wartet darauf, dass der E/A-Thread die Clientanforderung abschließt Threads werden für die Parallelverarbeitung verwendet.

3. Der Hauptthread führt den Anforderungsbefehl aus

Warum wählt Redis Single Thread?Nachdem der E/A-Thread die Anforderung analysiert hat, führt der Hauptthread diese Befehle weiterhin im Single-Thread-Verfahren aus.

4. Der E/A-Thread schreibt zurück in den Socket und der Hauptthread löscht die globale Warteschlange.

Nachdem der Hauptthread den Anforderungsbefehl ausgeführt hat, wird der Hauptthread in den Block geschrieben Zustand und warten Sie, bis der E/A-Thread das Ergebnis zurück in den Socket schreibt und an den Client zurückgibt.

Nach dem Zurückschreiben in den Socket löscht der Hauptthread die globale Warteschlange.

5. Was ist IO-Multiplexing?

IO-Multiplexing, ein synchrones IO-Modell, implementiert einen Thread zur Überwachung mehrerer Dateihandles. Sobald ein Dateihandle bereit ist, kann es das Anwendungsprogramm benachrichtigen, entsprechende Lese- und Schreibvorgänge auszuführen Das Programm wechselt in den Blockierungszustand und gibt CPU-Ressourcen frei.

1. IO, Betriebssystemebene bezieht sich auf die Lese- und Schreibvorgänge von Daten zwischen Kernelmodus und Benutzermodus;

3 .E/A-Multiplexing: Mit einem einzelnen Thread können mehrere Client-Socket-Verbindungen gleichzeitig verarbeitet werden.

Der dem Client-Socket entsprechende Dateideskriptor wird in Epoll registriert, und Epoll überwacht, welche Sockets Nachrichten enthalten, um eine große Anzahl von Unbrauchbaren zu vermeiden Betrieb.

Zu diesem Zeitpunkt wechselt der Socket in den nicht blockierenden Modus. Der gesamte Prozess wird nur blockiert, wenn Client-Nachrichten empfangen werden. Dieser Modus wird vollständig genutzt allgemein als ereignisgesteuert bezeichnet, also als Reaktorreaktionsmodus.

Das ultimative Ziel der Verwendung von Epoll besteht darin, den Durchsatz des Servers zu verbessern.

IO-Multiplexing und Epoll-Funktion sind die direkten Gründe für **„Warum ist Redis so schnell?“**.

Das obige ist der detaillierte Inhalt vonWarum wählt Redis Single Thread?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen