无法使用app.get方法连接到redis

我正在学习redis用例。 因为每个教程都build议caching数据更好。

我已经做了一个简单的演示,我试图在Web服务get方法中连接到redis服务器。

 var redis = require('redis'); var client = redis.createClient(); var express = require('express') var app = express() var port = process.env.PORT || 8080; // <== this is must app.get('/fetch_offers', function (req, res) { client.on('connect', function() { console.log('connected'); }); }); app.listen(port, function () { console.log(port) }) 

我试图在本地主机上访问它,如http:// localhost:8080 / fetch_offers

我用console.log方法debugging它,但它不打印连接的消息。 当我在app.get...之外创build这个方法时,它会执行node app.js

我希望它应该做一个URL的redis连接。 我不确定什么是最好的方法? 谁能帮我 ?

 var redis = require('redis'); var client = redis.createClient(); var express = require('express') var app = express() var port = process.env.PORT || 8080; // <== this is must client.on('connect', function() { console.log('connected'); }); app.get('/fetch_offers', function (req, res) { }); app.listen(port, function () { console.log(port) }) 

我在这里做什么错了?

它不会打印连接消息,因为事件在打到端点之前就会触发,此时没有任何内容正在侦听,并且会丢失。 尝试这样的事情:

 var redis = require('redis'); var client = redis.createClient(); client.on('connect', () => { console.log('Redis connected'); }); client.on('ready', () => { console.log('Redis ready'); }); client.on('error', (err) => { console.log('Redis error:', err.message); }); 

然后在您的路由处理程序中,您可以使用ping来查看您是否已连接:

 app.get('/fetch_offers', function (req, res) { client.ping((err, data) => { if (err) { console.log('Ping error:', err); return; } console.log('Ping response:', data); }); }); 

如果您使用promise-redis和async / await,则会稍微简单一点:

 app.get('/fetch_offers', async (req, res) => { try { console.log('Ping response:', await client.ping()); } catch (err) { console.log('Ping error:', err); } });