Tengo redis en funcionamiento en el puerto 6379, la conexión a través de telnet funciona bien.
Estoy tratando de conectarme a él en node.js, pero no obtengo respuesta de los detectores de eventos. Si hago una llamada a cualquier función como client.set() obtengo: "ClientClosedError: The client is closed".
Este es el código que estoy ejecutando:
const redis = require('redis'); const client = redis.createClient(6379); client.on('connect', () => { console.log('connected'); }); client.on('end', () => { console.log('disconnected'); }); client.on('reconnecting', () => { console.log('reconnecting'); }); client.on('error', (err) => { console.log('error', { err }); }); setTimeout(() => {console.log("goodbye") }, 20*1000 );No pasa nada durante 20 segundos, y luego se cierra.
A partir de la v4 de la biblioteca node-redis , debe llamar a client.connect() después de inicializar un cliente. Consulte esta guía de migración .
const redis = require('redis'); const client = redis.createClient({ socket: { port: 6379 } }); client.connect(); client.on('connect', () => { console.log('connected'); }); También puede considerar ejecutar el método de conexión del cliente con await en una función asíncrona. Por lo tanto, no tiene que preocuparse por los detectores de eventos.
const redis = require('redis'); (async () => { try { const client = redis.createClient({ socket: { port: 6379 } }); await client.connect(); console.log('connected'); } catch (err) { console.error(err) } })()