redis + node 연동

nogie·2022년 4월 11일
1
post-thumbnail
post-custom-banner

node 에서 redis 를 이용하기 위해 구글링으로 example code를 찾아보았다.

const redis = require('redis');
const client = redis.createClient();

client.set('name', 'value');
client.get('name', (err, reply) => {
  console.log(reply);
});

그러나 돌아온 결과는 보기 좋게 Error를 띄웠다.

하지만 stackoverflow는 모르는게 없는법.

바로 관련된 자료를 찾으러 달려갔다. 알아본 결과 redis package가 V4로 넘어가면서 client.connect()를 따로 작성해야 한다고 나와있다. (귀찮게..)

코드를 추가해주고 실행해보면

이젠 Error는 안뜨는데 별 반응이 없다.
그냥 redis V4 공식 문서의 example code를 가져와서 확실하게 해보자.

import { createClient } from 'redis';

(async () => {
  const client = createClient();

  client.on('error', (err) => console.log('Redis Client Error', err));

  await client.connect();

  await client.set('key', 'value');
  const value = await client.get('key');
})();

이번에도 V4로 넘어가면서 생긴 문제였었다.
비동기 처리 방식로 바뀐 V4에서 기존의 구버전에서 사용하던 코드를 쓰면 될리가 있나

import { createClient } from "redis";

const client=createClient()

async function run(){
    await client.connect()
}

run()

async function setVal(key,value){
    await client.set(key,value)
}

async function getVal(key){
    return await client.get(key)
}


setVal("test","tost")
const test=await getVal("test")
console.log(test)

대략적으로 V4로 바뀐 redis package는 이런식으로 사용하면 될 것 같다는 감을 잡고 넘어갈 수 있었다.

https://stackoverflow.com/questions/70185436/redis-nodejs-server-error-client-is-closed
https://www.npmjs.com/package/redis

profile
Dev Space
post-custom-banner

0개의 댓글