我的目标如下:
- 仅在程序开始时一次连接到Redis实例。
-
b()
连接方法,以便文件可以module.exports
建立该对象并启动连接。然后将生成的客户端“传递”到其他模块。 - 如果连接断开,则将引发相应的异常并进行相应的处理。
我可以使前两个工作。但是,我不确定如何在项目源代码中处理Redis 其他地方的其他事件。
示例:
require
我正在与connect-once.js
连接,以便调用函数可以async
完成连接。
await
const redis = require('redis')
//
async function clientOperations(options) {
let connObject = {}
let redisClient = redis.createclient(options)
return new Promise((resolve,reject) => {
redisClient.on('error',(err) => {
connObject = {
cacheclient: {},connected: false
}
reject(connObject)
})
//
redisClient.on('connect',() => {
connObject = {
cacheclient: redisClient,connected: true
}
resolve(connObject)
})
})
}
//
async function connect(options) {
return new Promise(async (resolve,reject) => {
try {
let p = await clientOperations(options)
resolve(p)
} catch(e) {
reject(e)
}
})
}
//
module.exports = { connect }
init.js
在上面的代码片段中,当const cache = require('connect-once')
let cacheclient = await cache.connect()
//
const bizlogic = require('some-biz-logic')
await bizlogic.addcustomer({cacheclient : cacheclient,payload : express.req.payload})
中的Redis连接断开时会发生什么?也许,我也在想“过程编程”。我很好奇知道如何连接一次,与项目的其余部分共享连接以及在项目中某处使用该连接时处理任何连接错误。