繁体   English   中英

具有持久连接的Node.js(MySQL / Redis)

Nodejs with persistent connection (MySQL/Redis)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想知道与MySQL / Redis建立连接/维护连接的最佳方法是什么(来自nodejs ):存储在一个对象中( conn )还是在每个请求上创建一个新连接? 即:

1,我们是否应该为每个nodejs http请求使用单个连接? 使用连接池? 还是每个新请求都有一个连接(因此重新连接很重要,因为连接可能会随机丢失)? 表现如何?

2,在保持这种连接方面,MySQL和Redis有什么区别?

1 个回复

我将告诉您过去我是如何做到的。

1,我们是否应该为每个nodejs http请求使用单个连接? 使用连接池? 还是每个新请求都有一个连接(因此重新连接很重要,因为连接可能会随机丢失)? 表现如何?

您不想为每个nodejs http请求手动创建连接。 如果您使用的是nodejs mysqlijs / mysql模块,请始终 使用连接池 我用它。

池自动处理服务器的重新连接

我没有基准,但是性能应该更好,因为一旦释放,池中的连接就可以重用。 相信我,在其他因素中,手动创建和管理连接既麻烦又容易出错。

例如:在如下所示的Db.js文件中声明您的mysql连接池,然后将其导出。

var mysql = require("mysql");
var pool = mysql.createPool({
   connectionLimit : 5,
   host            : process.env.DB_HOST || 'localhost',
   user            : process.env.DB_USER,
   password        : process.env.DB_PASSWORD,
   database        : 'mydb'
});

module.exports = db;

并在另一个文件的端点内部使用它。

var pool = require('./Db.js');

app.get('/endpoint', function (req, res) {
    // ...
    pool.query('<your-query-here>', function (err, res, fields) {
       if (err) throw err;
       // do something with result (res)
    });

});

我更喜欢根据方案同时使用pool.querypool.getConnection 使用query更为安全,因为您无需考虑释放连接。 它将由库自动处理。 getConnection仅用于必须在端点内运行多个查询的地方,因此我可以重用同一连接来执行此操作。

2,在保持这种连接方面,MySQL和Redis有什么区别?

总之,你不需要为池Redis的。 我们不考虑根据合并redis连接。

1 Redis和NodeJS - 连接异常

我正在使用Redis DB和NodeJS。 偶尔我会遇到异常,我的服务器(NodeJS)崩溃只会重新启动。 有人可以解释为什么会这样吗? 以下配置是否与此有关? ...

2 NodeJS - Redis 连接事件

我的目标如下: 仅在程序开始时连接到 Redis 实例一次。 module.exports连接方法,以便文件可以require这个对象并启动连接。 然后将生成的客户端“传递”给其他模块。 如果连接中断,则会引发相应的异常并进行相应处理。 我可以让前两个工作。 但是,我不确定如何在 ...

3 与JDBC到MySQL的持久连接

我有一个使用JDBC连接到MySQL的应用程序。 有些情况下,JDBC连接闲置数小时(甚至几天),并且它失去了与MySQL的连接,然后在尝试执行查询时排除。 什么是最好的解决方案? ...

5 NodeJS,Redis和MySQL

请曾经使用过NodeJS + Redis + MySQL的任何人。目标是让NodeJS从Redis获取数据,并且仅在找不到数据时才到达MySQL,并使用数据更新MySQL 。 然后我如何知道Redis的NoSQL in-memory DB来运行Redis的关系请求 我已经读过Redi ...

6 我应该保持我的Redis连接持久吗?

我正在考虑将redis用作我的api应用程序的键值存储。 api基本上只需要一个客户端连接到redis。 我不确定是否应该永远保持连接打开状态? 还是只在需要设置或从Redis获取值时才打开连接? 有人会认为打开连接是一项昂贵的操作,因此从这个意义上讲,应该永远喜欢连接。 另一方面 ...

8 使用MySql的Node.js中的持久会话

Nodejs的新功能。 这可能是一个愚蠢/容易的问题 我有一个Express App,我正在使用mysql进行持久会话。 (使用express-mysql-session来做到这一点)。 这是来自app.js的代码片段: routes.js 每当发送请求时,都会调 ...

9 在nodeJs中收到Redis连接错误

我收到此Redis连接错误,找不到我要去哪里。 到处寻找任何解决方案,但没有提及此类问题。 如您所见,我使用的是“ ioredis”而不是redis,这是为什么吗? 有什么建议么? 上面的代码中包含的./redis文件 ...

10 如何在Node.js中处理Redis连接

如何在Node.js中正常处理Redis连接错误? 我不仅要在缺少Redis缓存时,而且要在没有连接Redis服务器的情况下从数据库返回数据。 主要用例是,我只想在高峰时段打开Redis服务器,而在非高峰时段关闭。 即使关闭redis服务器,我也希望我的nodejs应用程序运行而不会退出。 我正在 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM