Redis:错误的“auth”命令参数数量

我正在使用redisnodejs。版本:"redis": "^3.1.2"

当我的服务器连接到 redis 时,出现以下错误:

ERR wrong number of arguments for 'auth' command

我猜它与 URL 有关系,它看起来像这样:

redis://h:<password>@<url>:<port>

我的 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 上导致上述错误。参考


以上是Redis:错误的“auth”命令参数数量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>