den*_*xic 3 redis node.js node-redis
我正在使用redisnodejs。版本:"redis": "^3.1.2"
当我的服务器连接到 redis 时,出现以下错误:
ERR wrong number of arguments for 'auth' command
Run Code Online (Sandbox Code Playgroud)
我猜它与 URL 有关系,它看起来像这样:
redis://h:<password>@<url>:<port>
Run Code Online (Sandbox Code Playgroud)
我的 redis 由 Heroku 托管,我无法更改 URL。并且不知道我怎样才能让它工作。非常感谢任何想法/解决方案。
Redis 版本 < 6.0.0 和node-redis >=3.1.0 ,redis://h:<password>@<url>:<port>将不起作用并抛出ERR wrong number of arguments for 'auth' command。
解决方案:redis://<password>@<url>:<port>有效,即:从 URL 中删除用户名。
这应该可以解决您面临的问题。
对于其他版本:
Redis 版本 < 6.0.0 和node-redis <=3.0.2 ,redis://h:<password>@<url>:<port>有效。
Redis 版本 >= 6.0.0 和 node-redis(任何版本),两者redis://<username>:<password>@<url>:<port>(当 redis ACL 中的用户名设置为自定义用户名时)并且 redis://<password>@<url>:<port>都可以工作。
原因是:
node-redis 根据releasenote进行了更改以支持 Redis-6 。
Redis-6 支持 ALC 中的用户名。在 v6 之前,Redis 没有包含用户的概念,唯一的认证策略是单一登录密码。参考
每当您将 Redis 插件附加到 Heroku 容器时,都会设置环境变量 REDIS_URL 并且值是格式为:的连接 URL redis://h:<password>@<url>:<port>。这个“h”是一个假/虚拟/占位符用户名,因为一些客户端(例如:node-redis)无法正确处理 URL 中的空白用户名。在 Redis 6 中发布 ACL 后,客户端开始支持使用 2 个参数(用户名和密码)的新 AUTH 命令。尝试将 h 用户名传递给 AUTH 的客户端将在 Redis 版本 4 和 5 上导致上述错误。参考
| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |