jm_p_op

node-cache : DB와의 트래픽 줄이기 본문

Node.js/Express

node-cache : DB와의 트래픽 줄이기

jm_p_op 2024. 5. 5. 21:51

https://www.npmjs.com/package/node-cache

npm install node-cache --save
  • 사용법
    • dictionary처럼 key -value값으로 존재한다. ttl을 사용하여 데이터 보관시간 관리
    • 자주 쓰는 데이터는 cache해두자
  • 제작한거
    • Permission id값과 이름을 지속적으로 변동해야되는데, DB에서 처리하는것보다 서버가 부담하는것이 좋다.
    • 대신 admin 유저만 사용가능하게 제작 
    • get - 한개씩 저장
    • setAll - 한번에 저장
    • patch - 데이터 수정될때 사용 (백 서버 여러개일때 서로에서 쏴주면 될듯싶다,)
  • 아쉬운점
    • 서버 메모리 할당됨으로 갯수 제한은 직접 코드로 작성해야된다.
    • 같은것을 또 사용할때, ttl 업데이트가 안된다.

 

const {Permission} = require("../models")
const NodeCache = require( "node-cache" );
const cache_permission = new NodeCache()
async function get(i){
    value = cache_permission.get(i)
    if (value==undefined){
        perms = await Permission.findAll({where:{authName:i}})
        for(j in perms){
            cache_permission.set(perms[j].authName,perms[j].authId)
        }
        value = cache_permission.get(i)
    }
    return value
}


async function patch(i){
    perms = await Permission.findAll({where:{authName:i}})
    for(j in perms){
        cache_permission.set(perms[j].authName,perms[j].authId)
    }
    value = cache_permission.get(i)
    return value
}

async function setAll(){
    perms = await Permission.findAll({})
    for(j in perms){
        cache_permission.set(perms[j].authName,perms[j].authId)
    }
    return perms
}
module.exports={
    get,
    patch,
    setAll
}

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

error_message관리  (0) 2024.05.07
Excel을 통한 seed/migration데이터 관리  (0) 2024.05.06
권한설정 - 차집합,교집합 js  (0) 2024.05.01
1:1, 1:m, m:n field Model&findAll  (0) 2024.04.30
Status.init({},{table 설정})  (0) 2024.04.30