The `npm install redis` client has a (very generalised) throughput of around 50k
messages per second. If you think that will be a ceiling for you, then client
pooling might become an option.

Another alternative is a redis client I made that can roughly double the
performance for small messages. Take a look at
https:/github.com/tim-smart/node-redis if this interests you.

Tim.

On Fri, Jul 13, 2012 at 12:29:22PM +0700, hd nguyen wrote:
> Thanks Tim for your suggestion about subscriber part.
> 
> Any suggestions for publisher part(one publisher for each ACTION or one
> publisher for ALL ACTION)? I want to hear about it.
> 
> Thanks.
> 
> On Fri, Jul 13, 2012 at 12:07 PM, Tim Smart <[email protected]> wrote:
> 
> > Hello,
> >
> > I would definitely recommend just adding one listener and doing all your
> > routing
> > from there. Something like:
> >
> >     redis.subscribe('channel1')
> >     redis.subscribe('channel2')
> >
> >     redis.on('message', function (channel, message) {
> >       // emitter.emit(channel, message)
> >       //
> >       // -or
> >       //
> >       // if (methods[channel]) methods[channel](message)
> >       //
> >       // -or
> >       //
> >       // switch (channel) {
> >       // case 'channel1':
> >       //   break
> >       // case 'channel2':
> >       //   break
> >       // }
> >     })
> >
> > The main reason being no matter how many clients you have, they will all
> > receive the same messages as each other; which means your clients will be
> > doubling up on emit operations.
> >
> > Tim
> >
> > On Fri, Jul 13, 2012 at 11:43:25AM +0700, hd nguyen wrote:
> > > Hi all,
> > >
> > > I have a concern when using pubsub mechanism of redis in my real
> > application.
> > >
> > > I built a MMO game with 5 servers (NodeJs) and use pubsub of Redis to
> > > broadcast game state between servers.
> > >
> > > But I concern which is the best practice to utilize this mechanism
> > > efficiently with a lot of users connect and interact simultaneously?
> > >
> > > I would love to hear your ideas about following problems:
> > >
> > > 1/ Should I create NEW channel for each action or just ONE channel for
> > ALL
> > > actions?
> > > Ex: user1 connect to server1, user2-server2,...userN-serverN
> > > When user1 move/fight and lost his health, those action should be
> > broadcast
> > > to other servers, so each time want to broadcast I should use:
> > > pub1.publish("pub1", "action data sent from pub1"); //just one channel
> > for
> > > ALL actions
> > > OR
> > > pub1.publish("pub1_actionID", "action data sent from pub1"); // each
> > > channel for EACH action
> > >
> > > 2/ And in each servers we create a client to listen:
> > > //subscribe ALL channels from ALL OTHER servers
> > >  client = redis.createClient(port, host);
> > > client.subscribe("pub1");
> > > client.subscribe("pub2");
> > > ....
> > > client.subscribe("pubN");
> > >
> > > client.on("message", function(channel, message){
> > >   console.log(host + ":" + channel + ": " + message);
> > > });
> > >
> > > As above snippet code, each server should be a client to listen ALL
> > > CHANNELS published by ALL other servers.
> > >
> > > But I concern whether I should use just ONE client to listen ALL channels
> > > or ONE client for EACH channel?
> > > //each subscribe for each channel
> > > client1 = redis.createClient(port, host);
> > > client2 = redis.createClient(port, host);
> > > client1.subscribe("pub1");
> > > client2.subscribe("pub2");
> > > ....
> > > client1.on("message", function(channel, message){
> > >   console.log(host + ":" + channel + ": " + message);
> > > });
> > > client2.on("message", function(channel, message){
> > >   console.log(host + ":" + channel + ": " + message);
> > > });
> > > ...
> > > 3/ Could you tell me how many connections redis can handle maximum in a
> > > second? (each time we createClient() we should create a connection to
> > Redis
> > > server, right? Does it take a lot of time and overhead?)
> > >
> > > 4/ Any tool to evaluate performance of pubsub mechanism for a MMO game
> > with
> > > multiple requests at the same time?
> > >
> > > Thanks for your time.
> > >
> > > --
> > > Nguyen Hai Duy
> > > Mobile : 0914 72 1900
> > > Yahoo: nguyenhd_lucky
> > >
> > > --
> > > Job Board: http://jobs.nodejs.org/
> > > Posting guidelines:
> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> > > You received this message because you are subscribed to the Google
> > > Groups "nodejs" group.
> > > To post to this group, send email to [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]
> > > For more options, visit this group at
> > > http://groups.google.com/group/nodejs?hl=en?hl=en
> >
> > --
> > Job Board: http://jobs.nodejs.org/
> > Posting guidelines:
> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> > You received this message because you are subscribed to the Google
> > Groups "nodejs" group.
> > To post to this group, send email to [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]
> > For more options, visit this group at
> > http://groups.google.com/group/nodejs?hl=en?hl=en
> >
> 
> 
> 
> -- 
> Nguyen Hai Duy
> Mobile : 0914 72 1900
> Yahoo: nguyenhd_lucky
> 
> -- 
> Job Board: http://jobs.nodejs.org/
> Posting guidelines: 
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to