首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在nodejs中使用redis的最佳实践是什么?

在nodejs中使用redis的最佳实践是什么?
EN

Stack Overflow用户
提问于 2014-02-11 17:07:16
回答 2查看 6.7K关注 0票数 4

我正在用nodejs、express和雷迪斯开发一个应用程序。我想做一个模块来封装所有与红宝石相关的操作,这样我就不必在任何地方处理红宝石键了。

代码语言:javascript
运行
复制
|- app.js
|- models
|   |- db.js   <-- All redis-related operations here
.....

那么我这里有两个问题。

  1. 我想要创建redis连接并选择一个数据库: var redis =需要量(‘redis’);var client = redis.createClient();client.select(config.database,函数(){ //实际db代码}); 由于select是异步调用,我如何在单独的模块(db.js)中使用它?
  2. 看起来,必须在脚本结束之前调用client.quite(),否则脚本不会退出。当db.jsclient封装为db.js中的局部变量时,如何在db.js之外执行此操作?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-11 17:53:52

我建议使用定义的接口创建类似于服务/存储库/接口的东西,然后调用它的方法。

例如,如果您有一个用户数据库:

代码语言:javascript
运行
复制
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中,您可以添加缓存。

代码语言:javascript
运行
复制
var app = express();
var userService = new UserService();
//...

如需结束,请阅读:我需要辞职吗?

票数 3
EN

Stack Overflow用户

发布于 2020-09-24 08:56:50

我用这个

lib/redisClient.js

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
import redisClient from "./lib/RedisClient"
...
const client = redisClient.createClient(process.env.REDISURI)
const clientA = redisClient.createClient(process.env.REDISURI)
...

这只会创建一个连接,因此您只能得到:

红系连接

而不是

红景天创造红系

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21708340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档