Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法在app.get方法中连接redis_Node.js_Redis - Fatal编程技术网

Node.js 无法在app.get方法中连接redis

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

我正在尝试学习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 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);
  }
});