Node.js 在nodejs中使用redis的最佳实践是什么?
我正在用nodejs、express和。我想制作一个模块来封装所有与redis相关的操作,这样我就不必到处处理redis密钥Node.js 在nodejs中使用redis的最佳实践是什么?,node.js,redis,Node.js,Redis,我正在用nodejs、express和。我想制作一个模块来封装所有与redis相关的操作,这样我就不必到处处理redis密钥 |- app.js |- models | |- db.js <-- All redis-related operations here ..... 既然select是一个异步调用,我如何在单独的模块(db.js)中使用它 看起来像是在脚本结束之前必须调用client.quite(),否则脚本不会退出。在db.js中将client封装为db.js中的局部变
|- app.js
|- models
| |- db.js <-- All redis-related operations here
.....
既然select
是一个异步调用,我如何在单独的模块(db.js
)中使用它
client.quite()
,否则脚本不会退出。在db.js
中将client
封装为db.js
中的局部变量时,如何在db.js
外部执行此操作我建议用定义好的接口创建类似于服务/存储库/接口的东西,然后调用它的方法 例如,如果您有一个用户数据库:
var UserService=function(){
this.client=new ...
}
UserService.prototype.getUserById=function(id, cb){
this.client.select(...,function(result,err){
cb(result);
}
}
UserService.prototype.... so on
现在,在您的express应用程序中,您将创建一个UserService变量并使用它。
当然,您应该创建更智能的用户服务。
在UserService中,您可以添加缓存
var app = express();
var userService = new UserService();
//...
最后,请阅读以下内容:我用这个
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)
...
这只会创建一个连接,因此您只会得到:
Redis connexion已创建
而不是
Redis connexion已创建
Redis connexion已创建
谢谢你的回答。我确实认为在每个方法中使用client
select
命令是一个好主意,但是直接这样做会导致每次调用方法时发出select
命令。可能一些可以重用当前连接的包装器就可以了。
import redisClient from "./lib/RedisClient"
...
const client = redisClient.createClient(process.env.REDISURI)
const clientA = redisClient.createClient(process.env.REDISURI)
...