2016-10-22 6 views
0

socket-io-redis использовать redis внутри для подключения, интересно, как я могу получить клиента клиента redis из библиотеки, чтобы я мог использовать этот клиент для хранения пар ключей в redis.Как мне получить клиентский магазин redis из socket-io-redis?

var redis = require('socket.io-redis'); 
var socketio = require('socket.io'); 

io = socketio.listen(app);  
io.adapter(redis({ host: 'localhost', port: 6379 })); 

Я использую модель узла кластера, поэтому я не хочу, чтобы создать новый клиент Redis, как у меня уже есть один.

ответ

1

Это показано here:

var adapter = redis({ host: 'localhost', port: 6379 }); 
var pubClient = adapter.pubClient; 
io.adapter(adapter); 

Там же эквивалент adapter.subClient, но вы не должны использовать что (клиенты, работающие в «подписаться» режим не должен использоваться для обычных команд Redis).

Я не уверен, что разумно использовать pubClient для выдачи команд. Redis может обрабатывать несколько соединений просто отлично, и это легко создать новый клиент из pubClient Например:

var pubClient = adapter.pubClient.duplicate(); 
+0

Я думал, имеющие несколько соединений не будут мудрым выбором, и это будет замедлять Redis, но благодаря прочистить сомневаюсь, я предпочел бы создать новый клиент redis. Есть ли разница между созданием нового клиента, такого как require ('redis'). CreateClient (хост, порт); чем создавать его из pubClient? – Bikash

+1

@bikash Единственное отличие состоит в том, что при использовании 'duplicate()' вам больше не нужно передавать параметры подключения (сервер, учетные данные и т. Д.). Кроме того, это то же самое. – robertklep