sql >> Database >  >> NoSQL >> Redis

Maakt de Rentalis Redis-bibliotheek zijn eigen thread voor asynchrone callbacks?

Redis-client maakt geen extra klantthreads en werkt in bestaande thread.

De Redis werkte in een ander (hoofd)proces. De redis-API die u gebruikt, werkte in uw lokale proces en gebruikt communicatie tussen processen voor het hoofdproces. Async-verzoek betekent dat uw proces of thread de taak naar een andere verplaatst en daarna elke andere u-taak of wachtgebeurtenis kan uitvoeren. Enige tijd later arriveerde een async antwoord op uw applicatie en beschikbaar voor gebruik. Uw toepassing moet https://en.wikipedia.org/wiki/Event_loop of een async-beheersysteem gebruiken dat u op de hoogte stelt door terugbellen om de gebeurtenis af te handelen (in dit geval opnieuw beantwoorden).

Asynchrone architectuur betekent dat u een gebeurtenislus uitvoert die callback-handlers voor elke gebeurtenis aanroept. Bij terugbellen kunt u een aantal asynchrone taken aanmaken. Nadat de taak is gemaakt, wordt verondersteld dat wanneer de taak is voltooid of een fout optreedt, de callback-gebeurtenishandler wordt aangeroepen. Terugbellen kan worden toegewezen om de app te starten of om een ​​nieuwe internetverbinding te laten verschijnen. Wanneer callback wordt aangeroepen, kunt u de redis-taak maken, en later wordt de callback van de resultaatgebeurtenis aangeroepen. Alle dingen in de huidige thread. Ik heb meerdere threads, redelijk om te verwachten dat je één gebeurtenislus per thread hebt.

Single-threaded-aard van Redis:http://redis.io/topics/latency#single-threaded-nature-of-redis

De client-socket wordt in de niet-blokkerende staat gezet omdat Redis multiplexing en niet-blokkerende I/O gebruikt. http://redis.io/topics/clients Dit betekent dat uw cliënt nooit zal worden geblokkeerd.

Van Redis 2.4 worden threads in Redis alleen gebruikt om wat trage I/O-bewerkingen op de achtergrond uit te voeren, voornamelijk gerelateerd aan schijf-I/O, maar dit verandert niets aan het feit dat Redis alle verzoeken bedient met een enkele thread.



  1. Redis/Jedis - Verwijderen op patroon?

  2. mongodb kon geen verbinding maken met de server

  3. MongoDB $addToSet

  4. Waarom heeft Mongoose zowel schema's als modellen?