无法使用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); } });