Wygląda na to, że tworzą połączenie redis dla każdego klienta. To zdecydowanie nie jest zalecane.
Redis to baza danych. To jak MySQL. Możesz uzyskać do niego dostęp przez klienta, ale jest to program działający na twoim serwerze. Dane są przez nią obsługiwane, więc nie musisz się martwić, gdzie się znajdują. Jeśli się martwisz, możesz spojrzeć na konfigurację redis. Więcej informacji tutaj:http://redis.io (dokument jest naprawdę dobry).
Aby "naprawić" kod i używać tylko jednego klienta, musisz go użyć w następujący sposób:
/**
* Move this at the top, this way it's not run once per client,
* it is run once the node program is launched.
*/
var r = redis.createClient();
var addSnippet = function( req, res ) {
getPostParams( req, function( obj ) {
r.stream.on( 'connect', function() {
r.incr( 'nextid' , function( err, id ) {
r.set( 'snippet:'+id, JSON.stringify( obj ), function() {
var msg = 'The snippet has been saved at <a href="/'+id+'">'+req.headers.host+'/'+id+'</a>';
res.respond( msg );
} );
} );
} );
});
};