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

时间:2018-03-17 14:16:49

标签: javascript express redis

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

app.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
});

1 个答案:

答案 0 :(得分:0)

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

我使用了一个非常标准的控制器,您可以根据需要使用(),如下所示。

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