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.
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 ausNachdem der E/A-Thread die Anforderung analysiert hat, führt der Hauptthread diese Befehle weiterhin im Single-Thread-Verfahren aus.
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.
5. Was ist IO-Multiplexing?
1. IO, Betriebssystemebene bezieht sich auf die Lese- und Schreibvorgänge von Daten zwischen Kernelmodus und Benutzermodus;
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.
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!