Die Gründe, warum Redis Single-Threaded ist: 1. Single-Thread erfordert nicht den Leistungsverbrauch verschiedener Sperren; 2. Single-Threaded-Multiprozess-Cluster-Lösung; Switching- und Race-Bedingungen, und es gibt keinen CPU-Verbrauch aufgrund von Switches, die durch Multiprozess oder Multithread verursacht werden.
Einfache Analyse:
(Empfohlenes Tutorial: Redis-Tutorial)
Redis Es handelt sich um einen speicherbasierten Vorgang. Die CPU ist 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 für Redis logisch, eine Single-Thread-Lösung zu übernehmen.
Detaillierte Gründe:
Es ist kein Leistungsverbrauch verschiedener Sperren erforderlich.
Die Datenstrukturen von Redis sind nicht nur einfache Schlüsselwerte, sondern auch Listen und Hashes Strukturen können sehr feinkörnige Operationen ausführen, z. B. das Hinzufügen eines Elements am Ende einer langen Liste oder das Hinzufügen oder Löschen eines Objekts aus einem 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-Threads 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.
Das obige ist der detaillierte Inhalt vonWarum Redis Single-Threaded ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!