我正在使用redis和nodejs。版本:"redis": "^3.1.2"当我的服务器连接到redis时,我得到以下错误:
redis
"redis": "^3.1.2"
ERR wrong number of arguments for 'auth' command
我猜这与URL有关,它看起来像这样:
redis://h:<password>@<url>:<port>
我的Redis是由Heroku托管的,我无法更改URL。我不知道如何才能使它工作。任何想法/解决方案非常感谢。
x4shl7ld1#
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中删除用户名。注意:-<password>前面的“:“这应该可以解决您所面临的问题。对于其他版本:Redis版本〈6.0.0且node-redis〈=3.0.2时,redis://h:<password>@<url>:<port>可以正常工作。Redis Version〉= 6.0.0和node-redis(任何版本),redis://<username>:<password>@<url>:<port>(当redis ACL中的用户名设置为自定义用户名时)和redis://<password>@<url>:<port>都可以工作。原因是:
redis://:<password>@<url>:<port>
<password>
redis://<username>:<password>@<url>:<port>
redis://<password>@<url>:<port>
1条答案
按热度按时间x4shl7ld1#
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中删除用户名。注意:-<password>
前面的“:“这应该可以解决您所面临的问题。
对于其他版本:
Redis版本〈6.0.0且node-redis〈=3.0.2时,
redis://h:<password>@<url>:<port>
可以正常工作。Redis Version〉= 6.0.0和node-redis(任何版本),
redis://<username>:<password>@<url>:<port>
(当redis ACL中的用户名设置为自定义用户名时)和redis://<password>@<url>:<port>
都可以工作。原因是:
redis://h:<password>@<url>:<port>
。此“h”是假的/虚拟的/占位符用户名,因为某些客户端(例如:node-redis)无法正确处理URL中的空用户名。在Redis 6中发布ACL后,客户端开始支持使用2个参数(用户名和密码)的新AUTH命令。在Redis版本4和5中,试图将h用户名传递给AUTH的客户端将导致上述错误。Reference