-
Javascript LRU Cache개발/nodejs 2023. 10. 11. 11:54
Javascript 언어에서는 메모리 애플리케이션 메모리 공간을 캐시처럼 사용할 수 있는 기능을 제공한다. Redis처럼 key - value 로 사용하면 되는 줄 알았는데 사용방법이 약간 다르다.
설명에 앞서 아래 코드의 결과 값을 예상해보자
import LRU from 'lru-cache'; const cache = new LRU<number, any>({ max: 3 }); const props = new Set(); cache.set(1, props); props.add('1'); props.add('2'); const result1 = cache.get(1); console.log('Result 1:', result1);
set 함수가 실행된 후 props 에 ‘1’, ‘2’가 들어갔으므로 결과값이 빈 집합으로 예상할 수도 있다. 그런데 실제 결과 값은 아래와 같다.
Result 1: Set(2) { '1', '2' }
왜 그럴까? LRU 캐시는 값이 아니라 오브젝트에 대한 참조를 저장하고 있기 때문이다. 즉 props 라는 객체가 저장하는 값을 바라보고 있기 때문에 set 함수 실행이후 오브젝트의 변화값을 동시에 추적할 수 있게 된다.
마찬가지로 result 값을 참조한 후에 데이터 값을 변환해도 변경 사항을 참조할 수 있다
import LRU from 'lru-cache'; const cache = new LRU<number, any>({ max: 3 }); const props = new Set(); cache.set(1, props); props.add('1'); props.add('2'); const result1 = cache.get(1); props.add('3'); console.log('Result 1:', result1);
실행 결과 get 함수 실행 이후에 추가한 '3'까지 동시에 출력되는 것을 확인 할 수 있다.
Result 1: Set(3) { '1', '2', '3' }
'개발 > nodejs' 카테고리의 다른 글
멀티 서버 환경에서 Socket.io 사용하기 (0) 2021.11.29 nodejs + android Socket.IO 를 이용해 소켓 통신 만들기 (0) 2021.10.28 nodejs + typescript 버전 heroku로 푸쉬하기 (0) 2021.10.27 우분투에 최신 nodejs 설치하기 (0) 2021.03.28 nodejs + postgresql (0) 2021.01.10