Estoy usando redis con nodejs. Versión: "redis": "^3.1.2"
Cuando mi servidor se conecta a redis, aparece el siguiente error:
ERR wrong number of arguments for 'auth' commandSupongo que tiene algo que ver con la URL, que se ve así:
redis://h:<password>@<url>:<port>Mi redis está alojado en Heroku y no puedo cambiar la URL. Y no tengo idea de cómo puedo hacer que funcione. Cualquier idea/solución muy apreciada.
La versión de Redis < 6.0.0 y node-redis >=3.1.0 , redis://h:<password>@<url>:<port> no funcionará y generará ERR wrong number of arguments for 'auth' command .
Solución: redis://<password>@<url>:<port> funciona, es decir: elimine el nombre de usuario de la URL .
Esto debería solucionar el problema al que te enfrentas.
Para otras versiones:
Versión de Redis <6.0.0 y node-redis <=3.0.2, redis://h:<password>@<url>:<port> funciona.
Versión de Redis >= 6.0.0 y node-redis (cualquier versión), tanto redis://<username>:<password>@<url>:<port> (cuando el nombre de usuario en redis ACL está configurado como nombre de usuario personalizado) y redis://<password>@<url>:<port> funcionará.
La razón es:
node-redis realizó los cambios para admitir Redis-6, según la nota de publicación .
Redis-6 admite el nombre de usuario en ALC. Antes de v6, Redis no incluía la noción de usuarios y la única estrategia de autenticación era una contraseña de inicio de sesión única. Referencia
Cada vez que adjunta un complemento de Redis al contenedor de Heroku, se establece la variable de entorno REDIS_URL y el valor es URL de conexión con el formato: redis://h:<password>@<url>:<port> . Esta "h" es un nombre de usuario falso/ficticio/de marcador de posición porque algunos clientes (p. ej., node-redis) no pudieron manejar correctamente un nombre de usuario en blanco en la URL. Después del lanzamiento de las ACL en Redis 6, los clientes comenzaron a admitir el nuevo comando AUTH que usa 2 argumentos (nombre de usuario y contraseña). Los clientes que intenten pasar el nombre de usuario h a AUTH generarán un error anterior en las versiones 4 y 5 de Redis. Referencia