Node-redis: 2020๋…„์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ฃจ๋ฒ„๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ๋น„๋™๊ธฐ์‹ redis ์„ธํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

์ด์ œ ํŒŒ๋ž‘์ƒˆ ์—†์ด๋Š” ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”.

Feature Request duplicate

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

์ด๊ฒƒ์€ FOSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์š”์ฒญํ•˜๋Š” ์ •๋ง ๋น„์ „๋ฌธ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๋ฉด ์ •์ค‘ํ•˜๊ณ  ์ƒ์‚ฐ์ ์ธ ์ผ์„ ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€์ด ๋  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ PR์„ ์—ด๊ฑฐ๋‚˜ ์ž์‹ ์˜ redis ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž์™€ ํ˜‘๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์œ„์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ด ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๋ƒ‰์†Œ์ ์ธ ํ•œ ๋ผ์ด๋„ˆ ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€์ด ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ƒ์‚ฐ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ์ž์‹ ์„ ์ œ๋Œ€๋กœ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

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

์•„์ง 2019๋…„์ž…๋‹ˆ๋‹ค.

Promises๊ฐ€ ํ™œ์„ฑํ™”๋œ typescript์—์„œ Redis์˜ ์ •์˜๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  ์ •์˜ ํŒŒ์ผ ์ƒ์„ฑ ์ œ์™ธ). ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ •๋ง๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค :(

@xtianus79 util.promisify ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑฐ ์•„์‹œ์ฃ ?

๋ถ„๋ช…ํžˆ, ๋ช…๋ น๋ณ„๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ MULTI/EXEC๋Š”... ๊ตฌ๋ฌธ์ƒ ์„ธ๋ จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ FOSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์š”์ฒญํ•˜๋Š” ์ •๋ง ๋น„์ „๋ฌธ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๋ฉด ์ •์ค‘ํ•˜๊ณ  ์ƒ์‚ฐ์ ์ธ ์ผ์„ ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€์ด ๋  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ PR์„ ์—ด๊ฑฐ๋‚˜ ์ž์‹ ์˜ redis ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž์™€ ํ˜‘๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์œ„์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ด ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๋ƒ‰์†Œ์ ์ธ ํ•œ ๋ผ์ด๋„ˆ ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€์ด ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ƒ์‚ฐ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ์ž์‹ ์„ ์ œ๋Œ€๋กœ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@BobbieBarker ์žฌ๋ฏธ์—†๊ฒŒ ๋งŒ๋“ค๋ ค๋Š” ์˜๋„์˜€์Šต๋‹ˆ๋‹ค!
๋‚˜ ๋˜ํ•œ ๋‹น์‹ ์ด ํ•˜๋Š” ๋ง์€ ๋‹น์‹ ์—๊ฒŒ๋„ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

๊ดœ์ฐฎ์•„?

const { promisify } = require('util');
const redis = require('redis');

let client = new Proxy(redis.createClient(), {
    get: (target, propKey, receiver) => {
        let asyncKey = typeof propKey === 'string' && propKey.endsWith('Async') && propKey.slice(0, -5);
        if (asyncKey) {
            return promisify(Reflect.get(target, asyncKey, receiver)).bind(receiver);
        }
        return Reflect.get(target, propKey, receiver);
    }
});

// use
client.setAsync('string key', 'val').then(res => {
    console.log(res);
});

@yi-huan์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์†”๋ฃจ์…˜์ด์ง€๋งŒ ์™„์ „ํ•œ ์•ฝ์† ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค.

@xtianus79 @Innomalist ๋‹น์‹ ์ด ์ฐพ๊ณ  ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์œ ์ผํ•œ ์ข…์†์„ฑ)๋ฅผ ๋ž˜ํ•‘ํ•˜๊ณ  ์•ฝ์† ๋ฐ ์œ ํ˜• ์Šคํฌ๋ฆฝํŠธ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค: https://npmjs.com/package/handy-redis.

@mmkal ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ?

@BobbieBarker ๊ท€ํ•˜์˜ ๊ณ ๋ ค ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ฃผ์š” ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ง€์›๋˜์ง€ ์•Š๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฑฐ์˜ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

#864์˜ ๋ณต์ œ๋ณธ์œผ๋กœ ์ด๊ฒƒ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ ํ”„๋ผ๋ฏธ์Šค ๊ธฐ๋ฐ˜ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด ์–ผ๋งˆ ์ „์— ์ž‘์—…ํ–ˆ์ง€๋งŒ ๊ทธ ์‹œ์ ์—์„œ ํ”„๋ผ๋ฏธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋Š๋ ธ์œผ๋ฏ€๋กœ ๊ฒŒ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๊ธฐ๋Šฅ ๋ถ„๊ธฐ์— ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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