我正在用nodejs、express和雷迪斯开发一个应用程序。我想做一个模块来封装所有与红宝石相关的操作,这样我就不必在任何地方处理红宝石键了。
|- app.js
|- models
| |- db.js <-- All redis-related operations here
.....
那么我这里有两个问题。
select
是异步调用,我如何在单独的模块(db.js
)中使用它?client.quite()
,否则脚本不会退出。当db.js
将client
封装为db.js
中的局部变量时,如何在db.js
之外执行此操作?发布于 2014-02-11 17:53:52
我建议使用定义的接口创建类似于服务/存储库/接口的东西,然后调用它的方法。
例如,如果您有一个用户数据库:
var UserService=function(){
this.client=new ...
}
UserService.prototype.getUserById=function(id, cb){
this.client.select(...,function(result,err){
cb(result);
}
}
UserService.prototype.... so on
现在,在您的快速应用程序中,您将创建一个UserService变量并使用它。当然,您应该更聪明地创建UserService。在UserService中,您可以添加缓存。
var app = express();
var userService = new UserService();
//...
如需结束,请阅读:我需要辞职吗?
发布于 2020-09-24 08:56:50
我用这个
lib/redisClient.js
import redis from "redis";
let _redisClient;
const redisClient = {
createClient(uri) {
if (!_redisClient){
console.log('Redis conexion created')
_redisClient = redis.createClient(uri);
}
return _redisClient;
},
close(): void {
_redisClient.close();
}
};
export default redisClient;
index.js
import redisClient from "./lib/RedisClient"
...
const client = redisClient.createClient(process.env.REDISURI)
const clientA = redisClient.createClient(process.env.REDISURI)
...
这只会创建一个连接,因此您只能得到:
红系连接
而不是
红景天创造红系
https://stackoverflow.com/questions/21708340
复制相似问题