Heim> Datenbank> Redis> Hauptteil

Warum verwendet Redis einen einzelnen Thread? Warum so schnell?

青灯夜游
Freigeben: 2021-11-01 10:08:02
nach vorne
2056 Leute haben es durchsucht

Was ist ein einzelner Thread vonredis? 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?

1. Grundkonzept

  • Was ist der einzelne Thread von Redis (die Kernfunktion liegt im einzelnen Thread, nicht alle Funktionen)

    • Das Netzwerk-IO und das Schlüssel-Wert-Paar lesen und Das Schreiben von Redis wird durch einen Thread abgeschlossen (Kerndienst von Redis).

    • Andere Funktionen von Redis werden durch zusätzliche Threads vervollständigt. Persistenz. Asynchrones Löschen. Cluster-Datensynchronisierung. Verwandte Empfehlungen:

      Redis-Video-Tutorial
      • 2. Warum Redis Single-Threading verwendet
    • Der Overhead von Multi-Threading

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)

Warum verwendet Redis einen einzelnen Thread? Warum so schnell?Die vom Client gesendete Anfrage analysieren ( analysieren)

Lesen Sie die Schlüsselwertdaten entsprechend dem Anforderungstyp (get)Warum verwendet Redis einen einzelnen Thread? Warum so schnell?

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

Warum verwendet Redis einen einzelnen Thread? Warum so schnell?

  • Ist Redis wirklich Single-Threaded?
  • Verwendet einen Thread für Netzwerk-E/A und Datenlese- und -schreibvorgänge.

Warum verwendet Redis einen einzelnen Thread? Warum so schnell?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!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!