2016-10-22 312 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