데이터 공부/데이터베이스 & SQL

Redis - Node.js 연동 - 127.0.0.1 이 아닌 다른 host 로 연결하는 방법

한소희DE 2022. 3. 24. 19:30

 

앞서, node js에 redis를 연동하는 방법 + 트러블 슈팅에 대해 포스팅을 했었다.

 

 

Redis - Node.js 연동 - ClientClosedError: The client is closed

나는 업무 상 redis 를 node js 애플리케이션에 연동해서 수행해야 할 테스트 작업이 있었다. 사실 js 를 잘 다루지 못하지만, 해당 방법에 대해서는 구글링 시 많은 자료가 나오므로 비교적 손쉽게

eng-sohee.tistory.com

 

 

 

 

나는 GCP memorystore Redis ( = Cloud Redis)에 연결해야 했다.

하지만 연동 과정에서, 127.0.0.1 을 제외한 다른 host로 연결이 안 된다는 이슈가 발생했다.

 

 

나는 client configuration 문서를 통해, socket을 이용하면 해당 이슈를 해결할 수 있다는 것을 알아냈다.

node-redis 내 socket이란, 말 그대로 소켓 연결 속성을 정의할 수 있는 객체다.

 

따라서, 이 연결 방법을 통해 host & port(이 외에도 더 많은 연결 속성을 정의할 수 있음)를 설정할 수 있고, 패스워드는 해당 소켓옵션 외부에서 설정하면 커넥팅이 가능하다.

 

 

 

결론적으로, 내가 수정한 js 파일은 아래와 같다.

const redis = require('redis');

const client = redis.createClient({
    socket: {
      port: 6379,
      host: '127.0.0.1'
    },
    password: 'mypassword'
  });


async function run() {

  await client.connect();
  
  const value = await client.get("test-key");
  console.log(value);

  await client.disconnect();
};

run();

 

주요 코드를 설명하자면, 아래와 같다.

 

 

  • const client : client 의 연결 속성을 정의 
    • 해당 연결속성 - host: 127.0.0.1 & port: 6379 & password: mypassword

 

  • run 함수 생성 및 실행
    • 함수 생성의 이유: client.connect()에 await을 부여하려면, async 내부에 작성해야 했기 때문

 

 

 

 

 

 

이를 진행하는 데에 있어, 참고한 문서는 다음과 같다.

아래 캡처한 부분의 빨간 박스를 참고하면 된다. (출처: 하기 링크)

 

링크: https://github.com/redis/node-redis/blob/HEAD/docs/client-configuration.md

 

GitHub - redis/node-redis: A high-performance Node.js Redis client.

A high-performance Node.js Redis client. Contribute to redis/node-redis development by creating an account on GitHub.

github.com