2017-05-16 1 views
1

redis의 사용 사례를 배우려고합니다. 각 자습서에서는 데이터를 캐싱하는 것이 더 좋습니다.app.get 메서드에서 redis로 연결할 수 없습니다.

웹 서비스 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) 
}) 

은 내가 console.log 방법을 사용하여 디버깅 http://localhost:8080/fetch_offers

처럼 로컬 호스트 컴퓨터에 액세스하려고하지만, 연결 메시지를 출력하지 않습니다. 이 메서드를 app.get... 외부에 만들면 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) 
}) 

내가 여기서 뭐하는거야?

답변

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를 사용할 수 있습니다 : 이런 식으로 뭔가를 시도하면 promise-redis 및 비동기/await를 사용하는 경우

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

그것은 약간 쉬울 것이다 :

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

위의 프로그램은 연결이 끊어진 경우 redis 서버로 다시 연결하려고합니다. 어떤 방법으로 그렇게하고 있습니까? –

+0

@Williams'redis' 모듈이 자동으로 처리합니다. 문서를 참조하십시오 : https://github.com/NodeRedis/node_redis#reconnecting – rsp

+0

아,이게 완벽합니다. –