gpt4 book ai didi

javascript - 将连接对象传递给模块更好还是在模块本身内进行连接更好?

转载 作者:行者123 更新时间:2023-12-02 18:05:57 25 4
gpt4 key购买 nike

var redis = require('redis');
var http = require('http');
var myModule = require('./my_module');
var server = http.createServer(function (req, res) {
myModule.something_that_uses_redis(req, redis, function(data) {
res.end(data);
});
});

是在模块外部定义 redis 并在需要时传入它更好,还是在 myModule 内部某处定义它更好?将其作为参数传递会导致某种不必要的压力还是两种方法大致相同?

这方面有最佳实践吗?

我正在重写一个 API,它意外地收到了大量请求,并且我正在尝试了解哪些类型的事情会导致不必要的处理。

最佳答案

我认为,如果您要创建一个 Redis 客户端实例,那么您最好共享该实例,而不是每次都创建一个新实例。否则,您将面临每次创建新连接的开销。

在您的示例中,您只需要该模块,并且由于这是在第一个 require 上缓存的,因此如果您在 myModule 中仅需要一次并通过引用传递,或者每个模块单独需要它,则几乎没有什么区别。

对于这个具体示例,根据过去的经验,我会在单独的模块中创建一个 Redis 客户端,将访问该客户端的所有逻辑放入该模块中的函数中,并从 myModule 调用这些函数。也就是说,您的数据库逻辑与应用程序有一定程度的解耦。这样,如果数据库发生变化,您只需更改模块中访问 Redis 的函数,而无需更改许多不同文件中的代码。

关于javascript - 将连接对象传递给模块更好还是在模块本身内进行连接更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20106466/

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