Heim >Datenbank >Redis >Redis ist Single-Threaded, aber warum ist es so effizient?

Redis ist Single-Threaded, aber warum ist es so effizient?

(*-*)浩
(*-*)浩Original
2019-11-21 14:34:563747Durchsuche

Redis ist Single-Threaded, aber warum ist es so effizient?

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-Verbrauch

Verwendet 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!

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