Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Sollte ich für jede Verbindung einen neuen Redis-Client erstellen?

Äh, sieht so aus, als würden sie für jeden Client eine Redis-Verbindung erstellen. Dies wird definitiv nicht empfohlen.

Redis ist eine Datenbank. Es ist wie MySQL. Sie können über einen Client darauf zugreifen, aber es ist ein Programm, das auf Ihrem Server ausgeführt wird. Die Daten werden von ihm verwaltet, sodass Sie sich keine Gedanken darüber machen müssen, wo sie sich befinden. Wenn Sie sich Sorgen machen, können Sie sich die Redis-Konfiguration ansehen. Weitere Informationen hier:http://redis.io (das Dokument ist wirklich gut).

Um den Code zu "reparieren" und nur einen Client zu verwenden, müssten Sie ihn folgendermaßen verwenden:

/**
 * 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 );
          } );
        } );
      } );
    });
};