Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis-Verbindung über Socket auf Node.js

Aktualisierung: Meine Antwort unten ist nicht wirklich richtig. Es stellt sich heraus, dass die Lösung in dem Problem, das ich unten erwähne, tatsächlich immer noch funktioniert. Es ist meiner Meinung nach eher ein Zufall, aber Sie können so etwas tun, und es sollte funktionieren:

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

Wie Sie dem Code-Snippet unten entnehmen können, wird dies an net.createConnection übergeben die sich mit dem Unix-Socket /tmp/redis.sock verbindet .

Alte Antwort:

Es gibt ein geschlossenes Problem zu diesem node_redis/issues/204. Es scheint, dass sich die zugrunde liegende net.createConnection-API von node.js seitdem geändert hat. Es sieht so aus, als wäre es ein ziemlich kleiner Fix in exports.createClient von node_redis Funktion:

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;
};

Es scheint, als ob net.createConnection versucht, sich mit einem Unix-Socket zu verbinden, wenn es mit einem Argument aufgerufen wird, das wie ein Pfad aussieht. Ich schlage vor, dass Sie einen Fix implementieren und eine Pull-Anfrage senden, da dies etwas zu sein scheint, das es wert ist, unterstützt zu werden.