【问题标题】:Redis: ERR wrong number of arguments for 'auth' commandRedis:“auth”命令的参数数量错误
【发布时间】:2021-08-09 07:12:56
【问题描述】:

我在 nodejs 中使用redis。版本:"redis": "^3.1.2"

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

ERR wrong number of arguments for 'auth' command

我猜它与 URL 有关,如下所示:

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

我的 redis 由 Heroku 托管,我无法更改 URL。并且不知道我怎样才能让它工作。非常感谢任何想法/解决方案。

【问题讨论】:

  • Redis 3.1.2 有重大更改。以上 URL 一直有效到 redis@^3.0.2
  • 这是 Heroku 的发行说明:devcenter.heroku.com/changelog-items/1932。请从 Heroku 的 env 变量中的 URL 字符串中删除用户名。它应该看起来像 redis://password_goes_here@host_goes_here:port_goes_here

标签: node.js redis node-redis


【解决方案1】:

Redis 版本 node-redis >=3.1.0 ,redis://h:&lt;password&gt;@&lt;url&gt;:&lt;port&gt; 将不起作用并抛出 ERR wrong number of arguments for 'auth' command

解决方案:redis://&lt;password&gt;@&lt;url&gt;:&lt;port&gt; 有效,即:从 URL 中删除用户名

这应该可以解决您面临的问题。

对于其他版本:

Redis 版本 node-redis redis://h:<password>@<url>:<port> 有效。

Redis 版本 >= 6.0.0 和 node-redis(任何版本),redis://&lt;username&gt;:&lt;password&gt;@&lt;url&gt;:&lt;port&gt;(当 redis ACL 中的用户名设置为自定义用户名时)和 redis://&lt;password&gt;@&lt;url&gt;:&lt;port&gt; 都可以工作。

原因是:

  • node-redis 根据releasenote 进行了更改以支持 Redis-6。

  • Redis-6 支持 ALC 中的用户名。在 v6 之前,Redis 不包含用户的概念,唯一的身份验证策略是单一登录密码。 Reference

  • 每当您将 Redis 插件附加到 Heroku 容器时,都会设置环境变量 REDIS_URL,其值为格式的连接 URL:redis://h:&lt;password&gt;@&lt;url&gt;:&lt;port&gt;。这个“h”是一个假/虚拟/占位符用户名,因为某些客户端(例如:node-redis)无法正确处理 URL 中的空白用户名。在 Redis 6 中发布 ACL 后,客户端开始支持使用 2 个参数(用户名和密码)的新 AUTH 命令。尝试将 h 用户名传递给 AUTH 的客户端将在 Redis 版本 4 和 5 上导致上述错误。Reference

【讨论】:

  • 谢谢。对于可能看到这一点的其他人,我做了一个简单的正则表达式来删除 Heroku 提供的 URL 中的“h”。
  • 我们刚刚遇到这个问题是因为promise-redis(此时不推荐),包括node-redis* 依赖解析。我们现在正在运行 Redis 5.0,因此从 3.0 到 3.1 的更新完全不相关,破坏了我们的 AUTH 命令,其中包含用户名。感谢您的精彩解释!
  • 只是评论,解决方案:redis://&lt;password&gt;@&lt;url&gt;:&lt;port&gt; 有效,即:从 URL 中删除用户名。应该是: 解决方案:redis://:&lt;password&gt;@&lt;url&gt;:&lt;port&gt; 有效,即:从 URL 中删除用户名。密码前需要:
  • @shernshiou 你是对的:redis://:&lt;password&gt;@&lt;url&gt;:&lt;port&gt; 对我来说效果很好
猜你喜欢
  • 1970-01-01
  • 2017-09-22
  • 2020-12-28
  • 1970-01-01
  • 2014-03-05
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
相关资源
最近更新 更多