我会告诉你我是如何做到这一点的。
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
.