Ubuntu์ upstart
๋ก ๋ถํ
ํ ๋ node.js ์๋ฒ๊ฐ ์์ต๋๋ค. Redis๊ฐ ์คํ๋๊ธฐ ์ ์ node.js ์๋ฒ๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ redis.createClient()
์์ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Redis connection to 127.0.0.1:6379 failed - ECONNREFUSED, Connection refused
at Socket.<anonymous> (/var/www/php-jobs/node_modules/redis/index.js:88:28)
at Socket.emit (events.js:64:17)
at Array.<anonymous> (net.js:830:27)
at EventEmitter._tickCallback (node.js:126:26)
๋ฌผ๋ก ๊ทธ๊ฒ์ try / catch ๋ฌธ์ผ๋ก ๊ฐ์ธ๋ ค๊ณ ํฉ๋๋ค. ๋ด ์๋ฒ์ ์์ :
var redis = require("redis");
function initializeRedis(callback) {
(function createClient(){
var client;
try {
client = redis.createClient();
} catch (e) {
setTimeout(createClient, 1000);
}
callback(client);
})();
};
initializeRedis(function(client) {
// Do things with client
});
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์ผ๋ฉฐ ์ฌ์ ํ ์์ธ๊ฐ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ฅํ๋ฉฐ Redis๊ฐ ์กด์ฌํ๊ธฐ ์ ์ ์๋ฒ๊ฐ ๋๊ธฐํ๋๋กํ๋ ค๋ฉด ์ด๋ป๊ฒํด์ผํฉ๋๊น?
์ด๊ฒ์ ํด๋ผ์ด์ธํธ๊ฐ "์ค๋ฅ"์ด๋ฒคํธ๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ๋ ธ๋์์ "error"๋ผ๋ ์ด๋ฒคํธ๋ ํน๋ณํฉ๋๋ค. ๋ฃ์ง ์์ผ๋ฉด ์์ธ๋ก ๋ณํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์์ "์ค๋ฅ"์ ๋ํ ๋ฆฌ์ค๋๋ฅผ ํ๋ณดํ๋ฉด ์ถฉ๋ํ์ง ์์ต๋๋ค. ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋๋ฉด ์๋์ผ๋ก ๋ค์ ์๋ํ๋ฏ๋ก ์ค๋ฅ๋ฅผ ์์ ํ๋ฉด ์๋์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค.
์ด ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ ๊ฒฐ๊ตญ ๋ง์ ์ฌ๋๋ค์๊ฒ ํผ๋์ค๋ฌ์์ง๊ธฐ ๋๋ฌธ์ ์ฌ์ฐ ๊ฒฐ๊ณผ ์ค๋ฅ๊ฐ ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ ๋ค์ ์์ ํ ๊ฒ์ ๋๋ค.
์ด ์ค ํ๋๋ผ๋ ์ฒ๋ฆฌ ๋์์ต๋๊น! try catch ๋ธ๋ก์์ ์ค๋ฅ๋ฅผ ์ก์ผ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ํ์ง ์์ต๋๋ค.
const ํด๋ผ์ด์ธํธ = redis.createClient ({
ํธ์คํธ : process.env.redis_hostname,
ํฌํธ : process.env.redis_port
})
client.on ( 'error', (์ค๋ฅ) => {
logger.error (error.message);
})
client.on ( 'connect', () => {
logger.info ( 'redis์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋จ');
})
๋ฐ๋ผ์ ์ด๊ฒ์ redis ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ํด๋ง์ ๊ณ์ํ๊ณ ์ฐ๊ฒฐ์ ์ฐพ์ผ๋ฉด ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋น ๋ฅธ ์๋ฃจ์
์ ์ํด @mranney ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
const ํด๋ผ์ด์ธํธ = redis.createClient ({
ํธ์คํธ : process.env.redis_hostname,
ํฌํธ : process.env.redis_port
})
client.on ( 'error', (์ค๋ฅ) => {
logger.error (error.message);
})
client.on ( 'connect', () => {
logger.info ( 'redis์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋จ');
})
๋ฐ๋ผ์ ์ด๊ฒ์ redis ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ํด๋ง์ ๊ณ์ํ๊ณ ์ฐ๊ฒฐ์ ์ฐพ์ผ๋ฉด ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋น ๋ฅธ ์๋ฃจ์ ์ ์ํด @mranney ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.