node-cache

배병일 ㅣ 2023. 7. 30. 02:25

db에 저장된 데이터 중 자주 사용 될 데이터를 계속해서 조회하여 찾아오는 건 비효율적임.

 

node-cache 를 사용하여 한번 조회한 뒤에 캐싱하여 서버 메모리에 저장함.

 

서버 메모리에 저장된 데이터를 이용함.

 

우선 node-cache를 사용하기 위해 설치.

 

npm i node-cache

node-cache를 사용하려다 엄청난 시간을 소모했음...

 

원했던 방법은

1. test1 이라는 api를 요청하면 캐싱처리.

2. 캐싱된 데이터를 test2 api를 요청할때 가져옴.

이다.

 

아주 간단하지만 방법을 모르고 구글링하는 법의 한계로 찾는데 못찾음..(결국 다른 팀원의 도움으로 해결)

 

// tset1

const NodeCache = require("node-cache");
const myCache = new NodeCache({ stdTTL: 0, checkperiod: 600 });

class Test1 {
  test1 = async (req, res) => {
    const t1 = "test1";
    const test = await myCache.set("option1", t1);
    return res.json({ test });
  };

  test11 = async (req, res) => {
    const test = await myCache.get("option1");
    return res.json({ test });
  };
}

module.exports = Test1;

node-cache 를 사용하기 위해 상단에 나와있는거 처럼 선언해줌.

 

test1 파일.

 

test1 이라는 함수 실행 시 set 해줌 ( 저장,캐싱 )

 

캐싱 됐는지 확인하기 위해 같은 test1 파일에서 test11이라는 함수를 만들어 줌.

 

test11 함수 실행시 get 으로 캐싱 데이터 가져옴 ( 잘 가져와짐 )

 

// test2

const NodeCache = require("node-cache");
const myCache = new NodeCache({ stdTTL: 0, checkperiod: 600 });

class Test2 {
  test2 = async (req, res) => {
    const test = await myCache.get("option1");
    return res.json({ test });
  };
}

module.exports = Test2;

 

test2 파일.

 

test1에서 캐싱처리한 데이터를 가져 오기 위해

 

test2 함수를 실행시 get으로 가져옴. ( 실패.. undefined )

 

여기서 부터 거진 4~5시간을 허비했다.

 

가져 올 방법을 찾기 위해.. 바로 방법을 설명하겠음.

 

// cache.js

const NodeCache = require("node-cache");
const myCache = new NodeCache({ stdTTL: 0, checkperiod: 600 });

module.exports = myCache;

test1, test2 파일에서 선언했던 node-cache 를 각각 선언하지말고

 

하나의 js 파일 을 만들어 node-cache 선언 하고 exports 해줌.

 

test1 과 test2 에서는 cache.js 파일을 가져와서 사용해줌.

 

이렇게 하면 아주 잘 불러와짐..

 

원인 :

 

test1 과 test2에서 각각 선언을 하여 사용 할 경우

 

node-cache가 test1 을 사용할때 실행되고

 

test2 를 사용할때 실행된다.

 

node-cache 특성 상 한번더 실행하면 초기화됐다가 실행 되는 거 같음.. ㅠ

'Javascript > Node.js' 카테고리의 다른 글

Node.js  (0) 2024.02.16
Node.js 동작원리  (0) 2024.01.15
Node 에서 import export 사용하기 위한 babel 과 type: module 의 차이  (0) 2023.09.23
Method  (0) 2023.06.13