javascript - 这是在 Express 中共享 Redis 客户端实例的正确方法吗?

标签 javascript express redis

由于我在单独的脚本中定义了应用程序路由,因此我需要一种方法来在所有脚本中共享同一个 Redis 客户端。这是正确的做法吗?

应用程序.js

const express = require('express');
const app = express();

var redis = require("redis"),
    client = redis.createClient();
app.use((req, res, next) => {
    req.redis = client;
    next();
});

// load routes

app.listen(3000, () => console.log('Example app listening on port 3000!'));

...其他js文件

app.get('/xyz', (req, res) => {
    var redis = red.redis;
    // use redis
});

最佳答案

无论是否需要,您都不必将客户端实例传递给每个请求。

我使用了一个非常标准的 Controller ,然后您可以根据需要使用 require(),如下例所示。

var redis = require('redis')
    .createClient(...);
redis.on('connect', function() {
    console.log('Redis server online.');
});
module.exports = redis;

然后每当你想访问它

var redis = require('./app/controllers/redis');
// redis => Redis client instance

关于javascript - 这是在 Express 中共享 Redis 客户端实例的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337899/

相关文章:

javascript - 使用异步在 UI 上可观察

javascript - 在 AngularJs : Uncaught Error: [$injector:modulerr] 上创建搜索

javascript - 如何使用 Node.js Express 强制 nginx proxy_next_upstream?

mysql - 未处理的拒绝 SequelizeDatabaseError : No database selected

php - 在 redis 中存储对象的最佳方式是什么?

javascript - jQuery 选择 ul li 下的所有输入

javascript - 如何从类方法中删除事件监听器

node.js - 如何知道文件下载何时完成?

ruby-on-rails - 数据从数据库中删除但仍然存在于redis缓存中

redis - Redis 列表/集合中的唯一值