由于我在单独的脚本中定义了应用程序路由,因此我需要一种方法来在所有脚本中共享同一个 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/