由于共享主机,我在目标主机上的 redis 服务器不是在端口上运行,而是在一个非常特定的套接字上运行,该套接字可以通过套接字文件连接,只有我的用户可以访问。
但是,我还没有找到如何通过我想要使用的包node_redis
和包中的套接字指定连接。connect-redis
有人知道该怎么做吗?
更新:我下面的答案并不正确。事实证明,我在下面提到的问题中的解决方案实际上仍然有效。这更像是一个巧合,IMO,但你可以做这样的事情,它应该可以工作:
var redis = require('redis'),
client = redis.createClient('/tmp/redis.sock');
正如您从下面的代码片段中看到的那样,这将被传递给net.createConnection
将连接到 unix 套接字/tmp/redis.sock
。
老答案:
关于这个node_redis/issues/204有一个已解决的问题。似乎,认为底层的 node.js net.createConnection API 已经改变了。看起来这将是 node_redisexports.createClient
函数中的一个非常小的修复:
exports.createClient = function (port_arg, host_arg, options) {
var port = port_arg || default_port,
host = host_arg || default_host,
redis_client, net_client;
net_client = net.createConnection(port, host);
redis_client = new RedisClient(net_client, options);
redis_client.port = port;
redis_client.host = host;
return redis_client;
};
如果使用一个参数调用它,似乎net.createConnection
会尝试连接到一个 unix 套接字,这看起来像一条路径。我建议您实施修复并发送拉取请求,因为这似乎值得支持。