現在、各プロセスの配列に実際のソケット オブジェクトを格納しています。次に、すべてのプロセス (ワーカー) がアクセスできるようにソケット データを redis に保存します。
ソケットを保存および取得するためのよりパフォーマンス/効率的な方法はありますか、またはこれはほとんどどのように行われますか? sockets 配列が 200k オブジェクトを超える可能性がある場合のパフォーマンスが心配です。
var _ = require('underscore');
//Storing the socket in memory and saving the redis associated data
var server = this;
//This function adds this hash to redis and returns a unique id
server.gs.addSocketInfo({
"userid": 0,
"displayName": "Mike's iPhone",
"connecttime": new Date().getTime()
}, function(err, socketid) {
socket.socketid = socketid;
server.sockets.push(socket);
doReady();
});
//To retrieve the data and socket later
//function returns the socket data from redis
server.gs.getSocketInfo(socket.socketid, function(err, sinfo) {
var socket = _.find(server.sockets, function(socket) {
return socket.socketid === sinfo.socketid;
});
if (socket)
//Do something with the socket here...
});