Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

570
Views
Redis Pub Sub: patrón de diseño

Estamos usando socket i/o para muchos datos en vivo. El usuario envía/recibe los datos usando sockets. Como usamos el equilibrador de carga, no podemos usar el modelo de espacio de nombres de socket i/o y, en su lugar, usar el pub/sub de redis dentro del socket.

Hasta ahora, estábamos creando una conexión redis separada para la suscripción por usuario por canal. Pero recientemente nos enfrentamos a un problema de conexión máxima alcanzada ( Error: Ready check failed: ERR max number of clients reached ) en redis y nos dimos cuenta de que se debe a que había demasiadas conexiones redis a través de pub sub.

Para contrarrestar eso, se me ocurrió que, en lugar de usar varias conexiones Redis de suscripción por usuario, ¿por qué no tener una conexión Redis de publicación y una conexión Redis de suscripción que escuchará todos los canales y se puede lograr de la siguiente manera:

 var pub = redis.createClient(); var sub = redis.createClient(); sub.psubscribe('*');

sub escuchará todos los canales. Además, podemos almacenar información sobre los canales a los que el usuario está suscrito en el objeto socket y manejar los datos en consecuencia.

Con suerte, soy claro con la declaración del problema y me gustaría entender cómo será el rendimiento con este patrón de diseño.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

En cuanto al rendimiento, es mucho mejor usar una sola conexión, es mucho menos estresante para el servidor redis y, al publicar datos, no tendrá que recorrer todas las conexiones. El "patrón" crea algunos gastos generales, pero es muy insignificante, asegúrese de ser más específico acerca de sus patrones, es posible que publique otro evento en ese servidor en el futuro.

 sub.psubscribe('someprefix_*');

Por cierto, si su problema es transmitir a socket.io dentro del contexto de varias instancias de NodeJS, puede consultar este módulo: https://github.com/socketio/socket.io-redis

Aprovecha redis para proporcionar una experiencia escalable de múltiples nodos con socket.io

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!