sql >> Databáze >  >> NoSQL >> Redis

Vytváří knihovna Redis vlastní vlákno pro asynchronní zpětná volání

Klient Redis nevytváří žádná další vlákna clent a funguje ve stávajícím vláknu.

Redis pracoval v jiném (hlavním) procesu. Redis API, které používáte, fungovalo ve vašem lokálním procesu a využívá meziprocesovou komunikaci s hlavním procesem. Asynchronní požadavek znamená, že váš proces nebo vlákno zadá úkol jinému a poté může provést jakýkoli jiný váš úkol nebo událost čekání. Po nějaké době do vaší aplikace dorazila asynchronní odpověď a byla k dispozici k použití. Vaše aplikace musí používat https://en.wikipedia.org/wiki/Event_loop nebo jakýkoli jiný asynchronní systém správy, který vás upozorní zavoláním zpětného volání pro zpracování události (v tomto případě redis answer).

Asynchronní architektura znamená, že spouštíte smyčku událostí, která pro každou událost volá obsluhu zpětných volání. Při zpětném volání můžete vytvořit řadu asynchronních úloh. Po vytvoření úlohy se předpokládá, že při dokončení úlohy nebo chybě bude zavolána obsluha události zpětného volání. Zpětné volání může být přiřazeno ke spuštění aplikace nebo k zobrazení nového webového připojení. Při volání zpětného volání můžete vytvořit úlohu redis a později bude voláno zpětné volání události výsledku. Vše v aktuálním vláknu. Nemám více vláken, je rozumné očekávat, že na každé vlákno budete mít jednu smyčku událostí.

Jednovláknová povaha Redis:http://redis.io/topics/latency#single-threaded-nature-of-redis

Klientský soket je uveden do neblokovaného stavu, protože Redis používá multiplexování a neblokování I/O. http://redis.io/topics/clients To znamená, že váš klient nebude nikdy zablokován.

Z vláken Redis 2.4 v Redisu používaných pouze k provádění některých pomalých I/O operací na pozadí, zejména souvisejících s diskovými I/O, ale to nic nemění na skutečnosti, že Redis obsluhuje všechny požadavky pomocí jediného vlákna.



  1. redis vs hazelcast

  2. Používá Redis pro ověření uživatelské jméno?

  3. Jak zkopírovat kolekci z jedné databáze do druhé v MongoDB

  4. nastavit pole jako prázdné pro objekt mongo pomocí mongoose