我正在尝试学习redis
的用例。因为每个教程都建议最好缓存数据。
我做了一个简单的演示,我试图在Web服务redis
方法中与get
服务器连接。
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)
})
我正在尝试在https://api.sandbox.paypal.com/v1/payments/payment
这样的localhost机器上访问它我使用console.log
方法对其进行了调试,但它不会打印已连接的消息。当我在app.get...
之外创建此方法时,它会在执行node app.js
时打印。
我希望它能够在点击网址时建立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)
})
我在这里做错了什么?
答案 0 :(得分:1)
它不会打印连接消息,因为事件在您到达端点之前会很好地触发 - 此时没有任何内容正在侦听它并且它会丢失。尝试这样的事情:
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);
}
});