一尘不染

通过Node.js上的套接字进行Redis连接

redis

由于共享主机,我的目标主机上的redis服务器不是在端口上运行,而是在非常特定的套接字上运行,该套接字可以通过套接字文件连接,只有我的用户可以访问。

但是,我还没有找到如何在node_redisand connect-redis包(我想使用的包)中通过套接字指定连接的方法。

有人知道怎么做吗?


阅读 254

收藏
2020-06-20

共1个答案

一尘不染

更新: 我下面的回答不是真的正确。事实证明,我下面提到的问题中的解决方案实际上仍然有效。IMO,这更多是巧合,但是您可以执行以下操作,并且应该可以:

var redis = require('redis'),
    client = redis.createClient('/tmp/redis.sock');

正如您从下面的代码片段中看到的那样,这将传递给net.createConnection它,并将其连接到unix socket
/tmp/redis.sock

旧答案:

关于此node_redis / issues /
204,
存在一个封闭的问题。看来,底层的node.js
net.createConnection
API 似乎已经改变了。看来这对node_redis’ exports.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套接字,似乎将尝试连接它。我建议您实施一个修复程序并发送请求请求,因为这似乎值得支持。

2020-06-20