Was ist ein einzelner Thread von redis? Warum verwendet Redis einen einzelnen Thread? Warum ist Single-Threaded Redis so schnell? Der folgende Artikel gibt Ihnen eine Analyse und ich hoffe, er wird Ihnen hilfreich sein!
![Warum verwendet Redis einen einzelnen Thread? Warum so schnell?](https://img.php.cn/upload/article/000/000/024/617f4b50e5523866.jpg)
1. Grundkonzept
Die Verwendung von Multi-Threading kann den Systemdurchsatz (pro Anfrage) erhöhen und die Skalierbarkeit des Systems erhöhen
Unbegrenzt Die Erhöhung der Anzahl der Threads führt zu einer Verringerung des Durchsatzes.
Gemeinsame Ressourcen, wie z. B. gemeinsam genutzte Datenstrukturen, werden von mehreren Threads gleichzeitig abgerufen.
- Um die Thread-Sicherheit zu gewährleisten, was zu Leistungseinbußen führt Grobkörnige Sperren führen zu allen seriellen und Systemdurchsatzraten. Steigt mit zunehmender Anzahl von Threads.
-
Um die Verwaltung gleichzeitiger Ressourcen zu sparen, verwendet Redis daher einen einzelnen Thread, um sicherzustellen, dass alle Vorgänge ausgeführt werden serialisiert
3. Single-Threaded Redis Warum ist es schnell? Client-Anfragen im Netzwerk, um einen hohen Durchsatz zu erreichen Anfrage abrufen
- muss die Client-Anfrage überwachen (binden/zuhören) und den Client (Code) Eine Verbindung herstellen (akzeptieren)
Die Anfrage vom Socket lesen (recv)
Die vom Client gesendete Anfrage analysieren ( analysieren)
Lesen Sie die Schlüsselwertdaten entsprechend dem Anforderungstyp (get) ![163573219563993Warum verwendet Redis einen einzelnen Thread? Warum so schnell? Warum verwendet Redis einen einzelnen Thread? Warum so schnell?](https://img.php.cn/upload/image/995/485/522/163573219563993Warum%20verwendet%20Redis%20einen%20einzelnen%20Thread?%20Warum%20so%20schnell?)
Geben Sie das Ergebnis schließlich an den Client zurück, d Accept() blockiert immer, wenn eine Verbindung nicht erfolgreich hergestellt werden kann
recv() Beim Lesen von Daten vom Client wird immer blockiert
Der nicht blockierende Modus des Sockets
- stellt sicher, dass der Redis-Thread nicht wie im Basis-IO-Modell am Blockierungspunkt wartet und auch nicht dazu führt, dass Redis die tatsächlich ankommende Verbindungsanforderung oder den Daten-IO-Multiplexing-Mechanismus unter Linux nicht verarbeiten kann 5. Multiplexing Spezifische Implementierung
-
- FD sind mehrere Sockets
-
- Redis verwendet den Epoll-Mechanismus, sodass der Kernel auf den Socket hören kann
-
- Redis kann eine Verbindung zu mehreren Clients herstellen und Anforderungen verarbeiten, wodurch die Parallelität verbessert wird
-
select/epoll bietet einen ereignisbasierten Rückrufmechanismus, der die entsprechende Verarbeitung für verschiedene Ereignisse aufruft. Die Funktion
-
stellt das Ereignis zunächst in die Ereigniswarteschlange ein, ohne zu prüfen, ob die Anforderung tatsächlich auftritt, und vermeidet so die Verschwendung von CPU-Ressourcen.
Führen Sie das aus Antwortvorgang gemäß dem entsprechenden Ereignis
6. Zusammenfassung
- Ist Redis wirklich Single-Threaded?
- Verwendet einen Thread für Netzwerk-E/A und Datenlese- und -schreibvorgänge.
-
Warum Single-Thread verwenden?
, um Probleme bei der Parallelitätskontrolle in der Multithread-Entwicklung zu vermeiden.
Das Multiplex-IO-Modell ist eng verwandt.
Warum ist Single Thread so schnell? Weitere Programmierkenntnisse finden Sie unter: - Programmiervideo
! !
Das obige ist der detaillierte Inhalt vonWarum verwendet Redis einen einzelnen Thread? Warum so schnell?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!