Node-redis: Redis ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰์ค‘์ธ ๊ฒฝ์šฐ ์‹œ๋„

์— ๋งŒ๋“  2011๋…„ 10์›” 16์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: NodeRedis/node-redis

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๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์ „์— ์„œ๋ฒ„๊ฐ€ ๋Œ€๊ธฐํ•˜๋„๋กํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

const ํด๋ผ์ด์–ธํŠธ = redis.createClient ({
ํ˜ธ์ŠคํŠธ : process.env.redis_hostname,
ํฌํŠธ : process.env.redis_port
})
client.on ( 'error', (์˜ค๋ฅ˜) => {
logger.error (error.message);
})
client.on ( 'connect', () => {
logger.info ( 'redis์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋จ');
})

image
๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ redis ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํด๋ง์„ ๊ณ„์†ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ฐพ์œผ๋ฉด ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ์†”๋ฃจ์…˜์„ ์œ„ํ•ด @mranney ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ "์˜ค๋ฅ˜"์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ์—์„œ "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์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋จ');
})

image
๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ redis ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํด๋ง์„ ๊ณ„์†ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ฐพ์œผ๋ฉด ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ์†”๋ฃจ์…˜์„ ์œ„ํ•ด @mranney ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰