我正在看下面的代码片段:
var addSnippet = function( req, res ) { getPostParams( req, function( obj ) { var r = redis.createClient(); 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 ); } ); } ); } ); }); };
从这里:http : //howtonode.org/node-redis- fun。
我不太了解发生了什么。从示例中,我认为Redis客户端是数据库和程序员之间的某种接口,但现在看来他们正在为每个提交的代码创建一个新客户端(他们在教程中构建的应用程序接受代码段)提交并将其存储在数据库中)!
另外,Redis数据库存储在哪里?与脚本位于同一目录中吗?我该如何改变?
我正在将Redis与Node.js一起使用。
嗯,看起来他们正在为每个客户端创建一个Redis连接。绝对不建议这样做。
要“修复”代码并仅使用一个客户端,您必须像这样使用它:
/** * 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 ); } ); } ); } ); }); };