sql >> Base de Datos >  >> NoSQL >> Redis

¿Debo compartir la conexión Redis entre archivos/módulos?

Cuando me enfrento a una pregunta como esta, generalmente pienso en tres preguntas básicas.

  1. ¿Cuál es más legible?
  2. ¿Cuál permite una mejor reutilización del código?
  3. ¿Cuál es más eficiente?

No necesariamente en este orden, ya que depende del escenario, pero creo que en este caso las tres preguntas están a favor de la opción B. Si alguna vez necesita modificar las opciones para createClient, deberá editarlas en cada archivo. que lo usa. Que en la opción A es cada archivo que usa redis, y la opción B es solo redis.js. Además, si sale un producto más nuevo o diferente y desea reemplazar redis, sería factible hacer que redis.js sea un contenedor para un paquete diferente o incluso un cliente de redis más nuevo, reduciendo sustancialmente el tiempo de conversión.

Los globales generalmente son algo malo, pero en este ejemplo, redis.js no debería almacenar un estado mutable, por lo que no hay problema en tener un global/singleton en este contexto.