Redis-klienten skapar inga ytterligare clent-trådar och fungerar i befintlig tråd.
Redis arbetade i en annan (huvud)process. Redis API som du använder fungerade i din lokala process och använder interprocesskommunikation till huvudprocessen. Async-begäran innebär att din process eller tråd lägger uppgiften till en annan, och efter det kan göra vilken annan din uppgift eller vänta-händelse som helst. En tid senare kom ett asynkront svar till din applikation och tillgänglig för användning. Din ansökan måste använda https://en.wikipedia.org/wiki/Event_loop eller något asynkront hanteringssystem som meddelar dig genom att ringa tillbaka för att hantera händelsen (i det här fallet återuppta svar).
Asynkron arkitektur innebär att du kör händelseslingor som anropar callback-hanterare för varje händelse. När du ringer tillbaka kan du skapa ett antal asynkrona uppgifter. När uppgiften väl har skapats, antas det att återuppringningshändelsehanteraren kommer att anropas när uppgiften är klar eller fel inträffar. Återuppringning kan tilldelas för att starta appen eller att ny webbanslutning visas. När återuppringning anropas kan du skapa återuppgiftsuppgiften, och senare återuppringning av resultatet kommer att anropas. Allt i nuvarande tråd. Jag har flera trådar, rimligt att förvänta sig att du har en händelseslinga per varje tråd.
Enkeltrådad natur för Redis:http://redis.io/topics/latency#single-threaded-nature-of-redis
Klientsocket sätts i icke-blockerande tillstånd eftersom Redis använder multiplexerande och icke-blockerande I/O. http://redis.io/topics/clients Detta betyder att din klient aldrig kommer att blockeras.
Från Redis 2.4 används trådar i Redis endast för att utföra några långsamma I/O-operationer i bakgrunden, huvudsakligen relaterade till disk I/O, men detta ändrar inte det faktum att Redis betjänar alla förfrågningar med en enda tråd.