gpt4 book ai didi

javascript - 我应该为每个连接创建一个新的 Redis 客户端吗?

转载 作者:IT王子 更新时间:2023-10-29 06:08:25 24 4
gpt4 key购买 nike

我正在查看这段代码:

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 客户端是数据库和程序员之间的某种接口(interface),但现在看来他们正在为每次提交的代码创建一个新的客户端(他们在教程中构建的应用程序接受代码片段提交并将它们存储在数据库中)!

另外,Redis 数据库存储在哪里?在与脚本相同的目录中?我该如何改变它?

我将 Redis 与 Node.js 结合使用。

最佳答案

呃,看起来他们正在为每个客户端创建一个 redis 连接。绝对不推荐这样做。

Redis 是一个数据库。这就像 MySQL。您可以通过客户端访问它,但它是在您的服务器上运行的程序。数据由它处理,所以你不必担心它在哪里。如果你确实担心,你可以看看redis配置。更多信息:http://redis.io (文档非常好)。

要“修复”代码,并且只使用一个客户端,您必须像这样使用它:

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

关于javascript - 我应该为每个连接创建一个新的 Redis 客户端吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11009880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com