由于共享托管,目标主机上的redis服务器不能在端口上运行,而是在非常特定的套接字上运行,该套接字可以通过套接字文件连接,只能由我的用户访问。
但是,我还没有找到如何通过node_redis
和connect-redis
包中的套接字来指定连接,我想要使用它们。
任何人都知道怎么做?
答案 0 :(得分:3)
更新:我的回答不正确。事实证明,我在下面提到的问题中的解决方案实际上仍然有效。这更像是巧合,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套接字,如果它使用一个参数调用,它看起来像一个路径。我建议你实现修复并发送拉取请求,因为这似乎值得支持。
答案 1 :(得分:0)
var client = redis.createClient(9000); // Open a port on localhost
var client = redis.createClient('/tmp/redis.sock'); // Open a unix socket
var client = redis.createClient(9000, 'example.com');
这个和选项记录在README。
上