Redis ist Single-Threaded:
Single-Threaded bedeutet, dass das Netzwerkanforderungsmodul einen Thread verwendet (es besteht also keine Notwendigkeit, die Sicherheit der Parallelität zu berücksichtigen), also einen Thread verarbeitet alle Netzwerkanfragen. Andere Module verwenden weiterhin mehrere Threads.
Thread-Sicherheit (empfohlenes Lernen: Redis-Video-Tutorial)
Redis übernimmt tatsächlich das Konzept des Thread-Schließens und schließt Aufgaben in einem Thread, was natürlich Probleme mit der Thread-Sicherheit vermeidet. Für zusammengesetzte Vorgänge, die auf mehreren Redis-Vorgängen basieren, sind jedoch weiterhin Sperren erforderlich, und diese können im Sperrstil verteilt werden.
Die Gründe, warum Redis schnell ausgeführt werden kann:
(1) Die überwiegende Mehrheit der Anfragen sind reine Speicheroperationen (sehr schnell)
(2 ) Verwendet einen einzelnen Thread, um unnötige Kontextwechsel und Race-Bedingungen zu vermeiden
(3) Nicht blockierendes IO – IO-Multiplexing (Was bedeutet IO-Multiplexing?)
IO-Multiplexing Es gibt drei Möglichkeiten zur Wiederverwendung: Auswählen , poll und epoll. Es ist zu beachten, dass Select und Poll Thread-unsicher sind, während Epoll Thread-sicher ist.
Die interne Implementierung von Redis verwendet Epoll und verwendet Epoll +, ein einfaches, von ihm selbst implementiertes Ereignis-Framework. Lesen, Schreiben, Schließen und Verbinden in Epoll werden alle in Ereignisse umgewandelt und dann die Multiplex-Funktion von Epoll verwendet, um keine Zeit mit io zu verschwenden. Diese drei Bedingungen sind nicht unabhängig voneinander, insbesondere die erste, wenn die Anforderung vorliegt Alle sind zeitaufwändig und der Durchsatz und die Leistung eines einzelnen Threads sind vorstellbar. Es sollte gesagt werden, dass Redis die geeignete technische Lösung für spezielle Szenarien ausgewählt hat.
Welche Vorteile bietet die Verwendung von Redis?
Es ist schnell, weil die Daten im Speicher gespeichert werden, ähnlich wie bei HashMap. Der Vorteil von HashMap besteht darin, dass die zeitliche Komplexität von Suche und Betrieb O(1) ist
Umfangreiche Unterstützung Der Datentyp unterstützt String, Liste, Satz, sortierter Satz, Hash
und unterstützt Transaktionen. Alle Operationen sind atomar. Dies bedeutet, dass alle Änderungen an den Daten entweder ausgeführt werden oder überhaupt nicht ausgeführt
Umfangreiche Funktionen: Kann zum Caching, Versenden von Nachrichten und zum Festlegen der Ablaufzeit per Schlüssel verwendet werden, wird nach Ablauf automatisch gelöscht
Für weitere Redis Verwandte technische Artikel finden Sie in der Spalte „Einführungs-Tutorial zur Verwendung der Redis-Datenbank“ in der Spalte „Einführung“!
Das obige ist der detaillierte Inhalt vonIst Redis Thread-sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!