Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Erstellt die Hiredis Redis-Bibliothek einen eigenen Thread für asynchrone Rückrufe

Der Redis-Client erstellt keine zusätzlichen Client-Threads und arbeitet in vorhandenen Threads.

Die Redis arbeiteten in einem anderen (Haupt-)Prozess. Die Redis-API, die Sie verwenden, funktionierte in Ihrem lokalen Prozess und verwendet die Interprozesskommunikation zum Hauptprozess. Asynchrone Anforderungen bedeuten, dass Ihr Prozess oder Thread eine Aufgabe an einen anderen weiterleitet und danach möglicherweise eine andere Aufgabe oder ein Warteereignis ausführt. Einige Zeit später traf die asynchrone Antwort bei Ihrer Anwendung ein und stand zur Verwendung bereit. Ihre Anwendung muss https://en.wikipedia.org/wiki/Event_loop oder ein beliebiges asynchrones Verwaltungssystem verwenden, das Sie benachrichtigt, indem es einen Callback aufruft, um das Ereignis zu behandeln (in diesem Fall redis answer).

Asynchrone Architektur bedeutet, dass Sie eine Ereignisschleife ausführen, die Callback-Handler für jedes Ereignis aufruft. Wenn der Rückruf aufgerufen wird, können Sie eine Reihe von asynchronen Aufgaben erstellen. Sobald die Aufgabe erstellt wurde, wird angenommen, dass der Callback-Ereignishandler aufgerufen wird, wenn die Aufgabe erledigt ist oder ein Fehler auftritt. Der Rückruf kann dem Starten der App oder dem Erscheinen einer neuen Webverbindung zugewiesen werden. Wenn der Rückruf aufgerufen wird, können Sie die Redis-Aufgabe erstellen, und ein späterer Rückruf des Ergebnisereignisses wird aufgerufen. Alles im aktuellen Thread. Wenn Sie mehrere Threads haben, können Sie davon ausgehen, dass Sie pro Thread eine Ereignisschleife haben.

Single-Threaded-Natur von Redis:http://redis.io/topics/latency#single-threaded-nature-of-redis

Der Client-Socket wird in einen nicht blockierenden Zustand versetzt, da Redis Multiplexing und nicht blockierende E/A verwendet. http://redis.io/topics/clients Das bedeutet, dass Ihr Client niemals blockiert wird.

Ab Redis 2.4 werden Threads in Redis nur verwendet, um einige langsame E/A-Vorgänge im Hintergrund auszuführen, hauptsächlich im Zusammenhang mit Festplatten-E/A, aber dies ändert nichts an der Tatsache, dass Redis alle Anforderungen mit einem einzigen Thread bedient.