Heim  >  Artikel  >  Datenbank  >  Warum ist Redis Single-Threaded?

Warum ist Redis Single-Threaded?

尚
Original
2019-06-29 10:08:415795Durchsuche

Warum ist Redis Single-Threaded?

1. Warum ist Redis Single-Threaded?

Da Redis ein speicherbasierter Vorgang ist, ist die CPU nicht der Flaschenhals von Redis. Der Flaschenhals von Redis ist höchstwahrscheinlich die Größe des Maschinenspeichers oder der Netzwerkbandbreite. Da Single-Threading einfach zu implementieren ist und die CPU nicht zum Engpass wird, ist es logisch, eine Single-Thread-Lösung zu übernehmen.

2. Detaillierte Gründe:

Es ist kein Leistungsverbrauch verschiedener Sperren erforderlich.

Die Datenstruktur von Redis besteht nicht nur aus einfachen Schlüsselwerten, sondern auch aus komplexen Strukturen B. Hash, können diese Strukturen sehr feinkörnige Vorgänge ausführen, z. B. das Hinzufügen eines Elements nach einer langen Liste oder das Hinzufügen oder Löschen eines Objekts

zum Hash. Für diese Vorgänge müssen möglicherweise viele Sperren hinzugefügt werden, was zu einem erheblich erhöhten Synchronisierungsaufwand führt.

Kurz gesagt, im Fall eines einzelnen Threads besteht keine Notwendigkeit, verschiedene Sperrprobleme zu berücksichtigen. Es gibt keine Sperr- und Freigabevorgänge und es gibt keinen Leistungsverbrauch durch mögliche Deadlocks.

2. Single-Threaded-Multiprozess-Clusterlösung

Die Leistung von Single-Threading ist tatsächlich sehr leistungsstark und die Effizienz jedes Kerns ist natürlich auch sehr hoch eine höhere Leistungsgrenze als Single-Threading, aber in der heutigen Computerumgebung kann selbst die Obergrenze von Single-Machine-Multi-Threading oft nicht die Anforderungen erfüllen. Die Einfädeltechnologie ist noch nicht verfügbar.

3. CPU-Verbrauch

Verwendet einen einzelnen Thread, um unnötige Kontextwechsel und Race-Bedingungen zu vermeiden, und es gibt keinen CPU-Verbrauch aufgrund von Umschaltungen, die durch Multiprozess oder Multithreading verursacht werden.

Was aber, wenn die CPU zum Flaschenhals von Redis wird oder Sie nicht möchten, dass andere CPU-Kerne des Servers im Leerlauf sind?

Sie können erwägen, mehrere weitere Redis-Prozesse zu starten. Redis ist eine Schlüsselwertdatenbank, keine relationale Datenbank, und es gibt keine Einschränkungen zwischen den Daten. Solange der Client weiß, welche Schlüssel in welchem ​​Redis-Prozess abgelegt werden, ist alles in Ordnung.

3. Vor- und Nachteile von Single-Threaded Redis

1. Vorteile von Single-Prozess und Single-Thread

Der Code ist klarer und die Verarbeitungslogik ist einfacher

Kein Grund zum Nachdenken. Es gibt keine Sperr- und Freigabevorgänge für verschiedene Sperrprobleme und es gibt keinen Leistungsverbrauch durch mögliche Deadlocks.

Es gibt keinen CPU-Verbrauch durch Umschaltungen durch Multiprozesse oder Multithreads

2. Nachteile von Einzelprozessen und Einzelthreads

Die Leistung einer Multi-Core-CPU kann nicht erreicht werden, kann aber durch das Öffnen mehrerer Redis verbessert werden Instanzen auf einer einzelnen Maschine;

Weitere Informationen zu Redis finden Sie in der Spalte Redis Tutorial !

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

Stellungnahme:
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