Kein Leistungsverbrauch verschiedener Sperren erforderlich Nicht alle sind einfache Schlüsselwerte, aber auch komplexe Strukturen wie Liste und Hash können sehr gut funktionieren -Körnige Vorgänge, wie das Hinzufügen eines Elements nach einer langen Liste, das Hinzufügen oder Löschen eines Objekts aus dem 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.Single-Threaded-Multiprozess-Clusterlösung
Die Leistung von Single-Threading ist tatsächlich sehr leistungsstark und die Effizienz jedes Kerns ist ebenfalls sehr hoch Multi-Threading ist natürlich besser als Single-Threading. Threads haben eine höhere Leistungsobergrenze, aber in der heutigen Computerumgebung kann selbst die Obergrenze von Single-Threading oft nicht die Anforderungen erfüllen -Server-Clustering-Lösungen sind immer noch dieselben. Daher ist ein Single-Threaded-Multiprozess-Cluster eine modische Lösung.
CPU-VerbrauchVerwendet einen einzelnen Thread, um unnötige Kontextwechsel und Race-Bedingungen zu vermeiden, und es gibt keinen Wechsel, der durch Multiprozesse oder Multithreads verursacht wird. Verbraucht CPU.
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 vonRedis ist Single-Threaded, aber warum ist es so effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!