node hkeys commands cli book redis publish-subscribe

hkeys - redis-cli commands



¿El redis pub/sub model requiere conexiones persistentes para redis? (3)

En una aplicación web, si necesito escribir un evento en una cola, haría una conexión para redis para escribir el evento.

Ahora, si quiero otro proceso de back-end (digamos un trabajo de demonio o cron) para procesar o reaccionar la publicación del evento en redis, ¿necesito una conexión persistente?

Poco confuso sobre cómo funciona este proceso de publicación / publicación en una aplicación web.


Básicamente, en Redis hay dos modelos de mensajería diferentes:

  • Fuego y olvido / uno a muchos: Pub / Sub. En el momento en que se publica un mensaje, todos los suscriptores lo recibirán, pero este mensaje se perderá para siempre. Si un cliente no estaba suscrito, no hay forma de recuperarlo.
  • Colas persistentes / One to One: Listas, posiblemente utilizadas con comandos de bloqueo como BLPOP. Con las listas, tiene un productor que ingresa en una lista y uno o varios consumidores que esperan elementos, pero un mensaje llegará solo a uno de los clientes en espera . Con las listas tiene persistencia, y los mensajes esperarán a que un cliente los abra en lugar de desaparecer. Entonces, incluso si nadie está escuchando, hay un retraso (tan grande como su memoria disponible, o puede limitar el retraso utilizando LTRIM).

Espero que esto quede claro. Le sugiero que estudie los siguientes comandos para comprender más sobre Redis y la semántica de los mensajes:

  • LPUSH / RPUSH, RPOP / LPOP, BRPOP / BLPOP
  • PUBLICAR, SUSCRIBIRSE, PSUBSCRIBE

Doc para estos comandos está disponible en redis.io


No estoy totalmente seguro, pero creo que sí, pub / sub requiere una conexión persistente.

Como alternativa, echaría un vistazo al resque y cómo lo maneja. En lugar de usar pub / sub, simplemente agrega un elemento a una lista en redis, y luego cualquier daemon o trabajo cron que tenga puede usar el comando lpop para obtener el primero.

Perdón por solo dar una pseudo respuesta y luego un tapón.