社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Redis

具有持久连接的nodejs(mysql/redis)

hiro • 6 年前 • 367 次点击  

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

1,我们应该为每个nodejs HTTP请求使用单个连接吗?使用连接池?或者每个新请求上都有一个连接(因此重新连接应该很重要,因为连接可能会随机丢失)?表演怎么样?

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37893
 
367 次点击  
文章 [ 1 ]  |  最新文章 6 年前
isuru89
Reply   •   1 楼
isuru89    6 年前

我会告诉你我是如何做到这一点的。

1,我们应该为每个nodejs HTTP请求使用单个连接吗?使用连接池?或者每个新请求上都有一个连接(因此重新连接应该很重要,因为连接可能会随机丢失)?表演怎么样?

您不希望为每个nodejs HTTP请求手动创建连接。 总是 use connection pooling 如果你使用nodejs mysqlijs/mysql 模块。我用它。

游泳池照管 server reconnections 自动地。

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

如: 在 Db.js 文件如下并导出。

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.query pool.getConnection 基于场景。使用 query 更安全,因为您不需要考虑释放连接。它将由库自动处理。 getConnection 仅在必须在端点内运行多个查询时使用,因此我可以重用相同的连接来执行此操作。

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

简而言之,你 不要 需要为Redis提供池。我们不考虑根据 this .