복붙노트

[REDIS] 사용 노드 8 util.promisify와 노드 - 레디 스

REDIS

사용 노드 8 util.promisify와 노드 - 레디 스

때문에 기 v : 8.1.2

나는 레디 스 클라이언트 노드는 노드 8 util.promisify, 비 블루 버드 레디 스 사용합니다.

콜백 redis.get 괜찮습니다,하지만 promisify 유형 가져 오기 오류 메시지

내 테스트 코드

const util = require('util');

var redis = require("redis"),
    client = redis.createClient({
        host: "192.168.99.100",
        port: 32768,
    });

let get = util.promisify(client.get);

(async function () {
    client.set(["aaa", JSON.stringify({
        A: 'a',
        B: 'b',
        C: "C"
    })]);

    client.get("aaa", (err, value) => {
        console.log(`use callback: ${value}`);
    });

    try {
        let value = await get("aaa");
        console.log(`use promisify: ${value}`);
    } catch (e) {
        console.log(`promisify error:`);
        console.log(e);
    }

    client.quit();
})()

해결법

  1. ==============================

    1.GET = util.promisify (client.get)를 보자 변경;

    GET = util.promisify (client.get)를 보자 변경;

    GET = util.promisify (client.get) .bind (클라이언트) 수 있도록;

    나를 위해 그것을 해결 :)

  2. ==============================

    2.레디 스 공식 REPO에서 뻔뻔 발췌

    레디 스 공식 REPO에서 뻔뻔 발췌

  3. ==============================

    3.또한 블루 버드 라이브러리를 사용할 수 있습니다 플러스 원숭이 패치는 당신을 위해 트릭을 할 것입니다. 예를 들면 :

    또한 블루 버드 라이브러리를 사용할 수 있습니다 플러스 원숭이 패치는 당신을 위해 트릭을 할 것입니다. 예를 들면 :

    const bluebird = require('bluebird')
    const redis = require('redis')
    async connectToRedis() {
         // use your url to connect to redis
         const url = '//localhost:6379'
         const client = await redis.createClient({
                    url: this.url
                }) 
         client.get = bluebird.promisify(client.get).bind(client);
         return client
       }
    // To connect to redis server and getting the key from redis
    connectToRedis().then(client => client.get(/* Your Key */)).then(console.log)
    
  4. from https://stackoverflow.com/questions/44815553/use-node-redis-with-node-8-util-promisify by cc-by-sa and MIT license