In diesem Artikel geht es um das Single-Threaded-Reaktormodell, das I/O-Modell und das Multithread-I/O-Modell in Redis. Ich hoffe, dass es Ihnen hilfreich sein wird!
Redis‘ hohe Leistung
- reiner Speicherzugriff, alle Daten befinden sich im Speicher, alle Vorgänge sind Vorgänge auf Speicherebene und die Speicherreaktionszeit liegt im Nanosekundenbereich. Daher hat die CPU des Redis-Prozesses grundsätzlich keine Festplatten-E/A-Wartezeit und Probleme mit der Lese- und Schreibleistung des Speichers. Die CPU ist nicht der Flaschenhals von Redis (die Speichergröße und die Netzwerk-E/A sind der Flaschenhals von Redis). ist die Lücke zwischen dem Client und dem Server bei der Übertragungsverzögerung. [Verwandte Empfehlungen: Redis-Video-Tutorial]
- verwendet ein Single-Thread-Modell und die Single-Thread-Implementierung ist einfach. Vermeidet den Overhead, der durch häufige Kontextwechsel von Multithreads und Synchronisierungsmechanismen wie Sperren entsteht: einfache und effiziente Basisdatenstrukturen: dynamische Zeichenfolgen (SDS), verknüpfte Listen, Wörterbücher, Sprungverknüpfungslisten, Ganzzahlmengen und komprimierte Listen. Dann verwendet Redis diese Basis, um Objekte zu implementieren, die Benutzer bedienen können: Zeichenfolgen, Listen, Hashes, Mengen, geordnete Mengen und andere Objekte im Netzwerkereignisprozessor im Reaktormodus. Es nutzt I/O-Multiplexing, um mehrere Sockets gleichzeitig zu überwachen, was ein effizientes I/O-Modell darstellt. Für reaktorbezogenes Wissen können Sie diesen Artikel lesen.
Framework-Artikel: Sehen Sie sich das Linux-Hochleistungsnetzwerk-IO+Reaktor-Modell an ; Es gibt keinen CPU-Verbrauch aufgrund des durch Multithreading verursachten Umschaltens- Es besteht keine Notwendigkeit, verschiedene Sperrprobleme zu berücksichtigen, es gibt keinen Vorgang zum Sperren und Freigeben von Sperren und es gibt keinen Leistungsverbrauch durch mögliche Deadlocks
- Einfach und Wartbar, der Multithread-Modus macht das Schreiben von Programmen komplizierter und mühsamer. Die Implementierung mit einem Thread ist einfach.
Redis ist ein Single-Thread-System?
Wir sagen oft, dass Redis Single-Threaded ist, weil sein Modellreaktor für die Netzwerkereignisverarbeitung Single-Threaded ist.- Wenn eine Clientanforderung Millionen von Schlüsselwerten löscht, kann dieser Befehl zu einer Blockierung führen. In Redis 4.0 haben wir uns für die Einführung von Multithreading entschieden, um diese Art von nicht blockierenden Befehlen zu implementieren Befehlsereignisse werden weiterhin in einer einzigen Zeile im Hauptthread verarbeitet.
- Wenn es sich um das gesamte Redis-System handelt, gibt es immer andere Threads, die asynchrone Aufgaben wie AOF und RDB-Synchronisierung erledigen
-
Redis-E/A-Modell
Die Redis-Verarbeitung ist nicht nur schnell, weil es sich um ein reines Single-Threaded-Speichersystem handelt, sondern auch um das Reactor-Modell und verwendet E/A-Multiplexing, um externe Anforderungen zu verarbeiten und Netzwerkverbindungs- sowie Lese- und Schreibwartezeiten zu reduzieren. Es kann eine große Anzahl von Client-Anfragen gleichzeitig in Netzwerk-E/A-Vorgängen verarbeiten und erreicht so einen hohen Durchsatz und eine hohe Parallelität -bezogenes Wissen finden Sie unter: - Einführung in die Programmierung
! ! -
Das obige ist der detaillierte Inhalt vonRedis Learning spricht über das Single-Threaded-Reaktormodell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!