node ioredis node.js redis npm

node.js - ioredis - redis windows



¿Hay una biblioteca de bloqueo de redis para node.js? (4)

Redis es muy rápido. La mayor parte de mi máquina es tan rápido como decir enunciados de JavaScript nativos o llamadas a funciones en node.js. Es fácil / fácil escribir código JavaScript regular en node.js porque no se necesitan devoluciones de llamada. No veo por qué no debería ser tan fácil obtener / establecer datos de clave / valor en Redis usando node.js.

Suponiendo que node.js y Redis están en la misma máquina, ¿hay alguna biblioteca npm que permita interactuar con Redis en node.js utilizando llamadas de bloqueo? Sé que tiene que ser una biblioteca C / C ++ que interactúa con V8.


El código de bloqueo crea un cuello de botella MASIVO .

Si usa código de bloqueo, su servidor se volverá INCREÍBLEMENTE lento.

Recuerde, el nodo tiene un solo hilo. Entonces, cualquier código de bloqueo bloqueará el nodo para cada cliente conectado.

Su propia evaluación comparativa muestra que es lo suficientemente rápido para un cliente. ¿Lo has comparado con 1000 clientes? Si prueba esto, verá por qué el código de bloqueo es malo


Si bien Redis es rápido, no es instantáneo ... por eso debe usar una devolución de llamada si desea continuar la ejecución y asegurarse de que sus valores estén allí.

La única forma en que creo que podrías (y no estoy sugiriendo que lo hagas) lograr esto es utilizar una devolución de llamada con una variable que es el predicado para dejar un temporizador.


Supongo que quiere asegurarse de que todas sus operaciones de inserción de redis se hayan realizado. Para lograr eso, puede usar los comandos MULTI para insertar claves o realizar otras operaciones. El módulo https://github.com/mranney/node_redis pone en cola los comandos insertados en objetos múltiples y los ejecuta en consecuencia.

De esta forma, solo necesita una devolución de llamada, al finalizar la llamada ejecutiva.


Esto parece una trampa para osos común para los desarrolladores que intentan acostumbrarse al modelo de programación de Node.

Lo que sucede es esto: te encuentras con una situación en la que el patrón de sincronización / devolución de llamada no encaja, crees que lo que necesitas es una forma de hacer código de bloqueo, preguntas a Google / StackExchange sobre el bloqueo en Nodo, y todo lo que obtienes es una advertencia sobre qué tan malo es el bloqueo.

Están en lo correcto: bloquear ("esperar el resultado de esto antes de hacer cualquier otra cosa"), no es algo que deba intentar hacer en Nodo. Pero lo que creo que es más útil es darme cuenta de que el 99.9% de las veces, realmente no estás buscando una forma de bloquear, solo estás buscando una forma de crear tu aplicación, "espera el resultado de esto". antes de continuar, "que no es exactamente lo mismo.

Intente buscar en la idea de "control de flujo" en Nodo en lugar de "bloquear" algunos patrones de diseño que podrían ser más claros para lo que está tratando de hacer. Aquí hay una lista de bibliotecas para ver:

https://github.com/joyent/node/wiki/modules#wiki-async-flow

También soy nuevo en Node, pero realmente estoy extrayendo Async: https://github.com/caolan/async