4

共有ホスティングのため、ターゲット ホスト上の私の redis サーバーはポート上では実行されませんが、ソケット ファイルを介して接続できる非常に特殊なソケット上で実行され、ユーザーのみがアクセスできます。

node_redisただし、使用したいパッケージとパッケージでソケットを介して接続を指定する方法がわかりませんconnect-redis

誰でもそれを行う方法を知っていますか?

4

2 に答える 2

4

更新:以下の私の答えは実際には正しくありません。以下で言及する問題の解決策は、実際にはまだ機能していることがわかりました。それは偶然の一致ですが、IMOですが、次のようなことができ、うまくいくはずです:

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

以下のコード スニペットからわかるように、これはnet.createConnectionunix socket に接続する に渡されます/tmp/redis.sock

古い答え:

このnode_redis/issues/204についてはクローズ済みの問題があります。基盤となる node.js のnet.createConnection API がその後変更されたようです。exports.createClientnode_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 ソケットに接続しようとするようです。これはサポートする価値があると思われるため、修正を実装してプル リクエストを送信することをお勧めします。

于 2012-08-29T13:25:42.077 に答える
-1

接続文字列がなくなりました...

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に記載されています。

于 2015-04-29T06:44:30.357 に答える