编辑:在考虑了这个问题之后,真正的问题是,使用tls连接digitalocean的托管redis和节点redis的示例是什么?
我可以使用用户名/密码与redisinsight gui客户端连接,但无法与nodejs连接。它在同一台计算机上,所以没有防火墙问题。
var redis = require('redis');
var client = redis.createClient(process.env.REDIS_PORT, process.env.REDIS_URL, {no_ready_check: true});
client.auth('password', function (err) {
if (err) {
console.log(err);
return
}
console.log('auth')
});
有一件事我很困惑,那就是在哪里输入用户名?这只是“默认值”,但是node\u redis的文档没有提供在身份验证期间提供用户名的方法。
错误是: AbortError: Redis connection lost and command aborted. It might have been processed.
这是我的工作轻微匿名redisinsight连接屏幕。
如何在节点redis中执行相同的操作?
1条答案
按热度按时间pdtvr36n1#
这个
AUTH
命令,如文件所述:使用acl时,命令的单参数形式(仅指定密码)假定隐式用户名为“default”。
因此,即使您使用的是支持其他用户的redis 6,您的身份验证
default
应该有用。您看到的错误是由于连接中断造成的,例如,您不知何故与redis服务器失去了连接。
node-redis
正在处理两种情况之一(或两者兼有)-连接已超时或重新连接尝试次数已超过配置中指定的最大次数。我会仔细检查你的连接信息和你的redis服务器是如何配置的。我看到您正在使用tls,您可能会发现这很有用:保护节点redis
如果您想用不同的用户对节点redis客户端进行身份验证,那么在使用redis 6时,必须使用
send_command
,但在您需要删除当前AUTH
命令,因为当前节点redis不支持新命令AUTH <username> <password>
.