2016-10-22 306 views
0

socket-io-redis使用redis内部进行连接,我想知道如何从库中获取redis存储客户端,以便我可以使用该客户端在redis中存储关键值对。如何从socket-io-redis获取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(host,port);比从pubClient创建它? – Bikash

+1

@bikash唯一的区别是,当使用'duplicate()'时,您不必再次传递连接选项(服务器,证书等)。除此之外,它是一样的。 – robertklep