API, Redis로 Cache하기 (Express)

‍정진철·2023년 2월 2일
0

사용자에게 빠른 데이터 전송을 해주기 위해 캐싱을 적용하는데 이것을 도와주는 것이 Redis !!

Redis ?

Redis는 Remote Dictionary Server의 약자로, "key-value" 구조의 데이터를 저장하고 관리하는 비관계형 데이터베이스 관리 시스템입니다.

메모리에서 데이터를 처리하기 때문에 속도가 상당히 빠릅니다.

step1. Redis 설치

brew install redis
brew services start redis

step2. redis 패키지 설치

npm i redis

step 3. caching을 위한 미들웨어 및 유틸리티 함수 작성

1. 라우터에 미들웨어로 추가.

const express = require('express');
const { get } = require('../../utils/cache');
const { findRequestingMembers } = require('../../controller/club/postController');

router.route('/members/request/:club_id')
        .get(get)
        .get(findRequestingMembers);
        
module.exports = router;

2. 함수에 set 적용시키기.

const { set } = require('../../utils/cache');

module.exports.findRequestingMembers = async (req,res) => {

  ...

    const membersRequesting = await retrieveRequestingMembers(club_id)
    if(membersRequesting.length < 1) {
        return res.status(400).json({ message: "Any Members requesting doesn't exist. " })
    } else {
    	set(req.originalUrl, items);
    		res.status(200).send({
      		ok: true,
      		data: items,
    	});
    }
} catch (err) {
        console.log("Err", err);
        return res.status(500).send({
            status : "error",
            message : err.message,
        })
    }
};

정리: get 함수로 정보를 읽어드려 router에 추가시키고 재빠르게 정보를 읽어와 그 다음 콜백 함수를 실행시키고 해당 콜백 함수에서 set함수를 이용해 해당 데이터들을 뿌려준다 !

<참조>
https://velog.io/@kshired/Express%EB%A1%9C-%EB%A7%8C%EB%93%A0-API%EB%A5%BC-Redis%EB%A1%9C-Cache%ED%95%98%EA%B8%B0

profile
WILL is ALL

0개의 댓글