Node.js 无法在app.get方法中连接redis
我正在尝试学习redis的用例。正如每个教程所建议的那样,它更适合缓存数据 我做了一个简单的演示,试图在web服务Node.js 无法在app.get方法中连接redis,node.js,redis,Node.js,Redis,我正在尝试学习redis的用例。正如每个教程所建议的那样,它更适合缓存数据 我做了一个简单的演示,试图在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 mu
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)
})
我在这里做错了什么?它不会打印连接消息,因为事件在您到达端点之前就触发了,在这一点上,没有任何东西在侦听它,它会丢失。试着这样做:
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);
});
});
如果使用和async/await,会稍微容易一些:
app.get('/fetch_offers', async (req, res) => {
try {
console.log('Ping response:', await client.ping());
} catch (err) {
console.log('Ping error:', err);
}
});
我看到上面的程序正在尝试重新连接redis服务器,以防连接丢失。什么方法可以做到这一点?@Williams
redis
模块会自动做到这一点。看医生:啊,这太完美了
app.get('/fetch_offers', async (req, res) => {
try {
console.log('Ping response:', await client.ping());
} catch (err) {
console.log('Ping error:', err);
}
});