jm_p_op
node-cache : DB와의 트래픽 줄이기 본문
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 |