共有ホスティングのため、ターゲット ホスト上の私の redis サーバーはポート上では実行されませんが、ソケット ファイルを介して接続できる非常に特殊なソケット上で実行され、ユーザーのみがアクセスできます。
node_redis
ただし、使用したいパッケージとパッケージでソケットを介して接続を指定する方法がわかりませんconnect-redis
。
誰でもそれを行う方法を知っていますか?
更新:以下の私の答えは実際には正しくありません。以下で言及する問題の解決策は、実際にはまだ機能していることがわかりました。それは偶然の一致ですが、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 がその後変更されたようです。exports.createClient
node_redis の関数の非常に小さな修正のように見えます。
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
に見える 1 つの引数で呼び出された場合、Unix ソケットに接続しようとするようです。これはサポートする価値があると思われるため、修正を実装してプル リクエストを送信することをお勧めします。