이 문서에서는 Redis Cache를 사용하는 샘플 애플리케이션에 대한 설명을 제공합니다.
Express Node JS 애플리케이션을 생성하는 방법에 대한 이 기사를 참조하면 더 이상 지체 없이 해당 주제로 빠르게 이동할 수 있습니다.
캐싱이 필요한 이유는 무엇인가요?
동일한 응답을 여러 번 제공해야 하는 경우 데이터를 분산 서버 메모리에 저장하면 매 호출마다 스토리지 계층에서 검색되는 데이터보다 더 빠르게 검색할 수 있습니다. 캐싱은 지정된 기간 동안 값을 복제하고 웹 요청을 즉시 제공하는 애플리케이션의 기능입니다.
이러한 기술은 다음과 같은 경우에 효과적입니다.
- 타사 API 및 호출 횟수를 호출해야 합니다
- 클라우드와 서버 간 데이터 전송 비용.
- 서버 응답은 동시 요청에 따라 중요합니다.
Redis 캐시란 무엇인가요?
Redis와 같은 중앙 집중식 분산 시스템에 저장된 데이터 캐시입니다. Redis는 데이터 구조 서버라고도 하는데, 이는 많은 로드 시간 없이 다양한 프로세스가 동시에 데이터를 쿼리하고 수정할 수 있음을 의미합니다.
Redis의 장점
데이터 구조의 특별한 속성은 다음과 같습니다.
- 데이터가 자주 요청, 제공 및 수정되더라도 데이터는 RAM에 저장되지 않고 디스크에 저장됩니다.
- 고급 프로그래밍 언어와 달리 구현에서는 메모리 최적 사용을 강조합니다.
- 복제, 내구성 수준, 클러스터링, 고가용성(HA)과 같은 기능도 제공합니다.
- Redis는 목록, 세트, 순서가 지정된 데이터 세트 등과 같은 복잡한 Memcached 작업을 처리할 수 있습니다.
로컬 시스템에서 Redis 클라이언트 사용
Redis를 사용하려면 로컬 시스템에 Node JS Redis Client를 설치해야 합니다. msi 파일(이 기사 게시일 현재 v3.0.504 안정 버전)은 Github에서 다운로드하여 일반 설치 프로세스(Windows OS의 경우)를 진행할 수 있습니다.
최신 Redis 클라이언트는 WSL(Linux용 Windows 하위 시스템)과 함께 설치하고 Redis 6.x 버전을 설치할 수도 있습니다. 또한 Dockerizing의 경우 Mac 및 Linux OS의 경우 다운로드 지침을 따르세요
다음 명령으로 Redis 클라이언트를 실행하세요
redis-server

Express Node JS 애플리케이션 만들기
PowerShell 또는 cmd 프롬프트 창을 열고 대상 폴더로 이동합니다.
다음 명령을 실행하세요
npx express expressRedisCaching –hbs

다음 명령을 사용하여 모듈을 설치하십시오.
npm i 다음 추가 패키지를 설치하세요
npm i redis
npm i isomorphic-fetch 모든 패키지가 설치되고 시작할 준비가 되면. "getCached.js라는 새 경로 페이지를 만들었습니다. ” 및 “App.js에 매핑됩니다. ” 페이지입니다.
app.use('/getCached', require('./routes/getCached')); 엔드포인트를 호출하면 논리는 JSON 자리 표시자(모의 API) 사이트에서 응답을 가져오고 Redis Cache에 데이터를 저장한 후 요청에 응답하는 것입니다. 추가 요청 시 캐시된 데이터가 제공됩니다.
const express = require('express')
require('isomorphic-fetch')
const redis = require('redis')
const router = express.Router()
const client = redis.createClient({
host:'127.0.0.1',
port:6379
})
let sourceURL = 'https://jsonplaceholder.typicode.com/todos';
router.get('/',async(req, res)=>{
await client.connect();
const value = await client.get('todos');
if(value){
console.log("from cached data")
res.send(JSON.parse(value))
}
else{
const resp = await fetch(sourceURL)
.then((response) => response.json());
await client.set('todos', JSON.stringify(resp));
console.log("from source data")
res.send(resp);
}
await client.disconnect();
})
module.exports = router Redis를 사용하여 생성된 객체는
redis.createClient({ host:’127.0.0.1’, port:6379}); 옵션 있음
호스트 :현재 Redis는 로컬 시스템에서 사용할 수 있으므로 호스트는 기본 127.0.0.1입니다.
포트 :기본적으로 Windows OS는 Redis에 6379 포트를 할당하지만 동일하게 사용자 정의할 수 있습니다.
이제 명령을 실행하여 앱을 실행할 차례입니다.
npm start


첫 번째 적중 시 약 1156ms의 응답 시간으로 소스 API에서 데이터를 가져오고 동일한 내용이 메모리 내 데이터 저장소 Redis Cache에 저장됩니다. 두 번째 적중은 ~10ms 또는 심지어 ~6ms의 놀라운 가져오기 시간 감소를 통해 캐시된 데이터를 가져옵니다.
따라서 매우 간단한 단계를 거쳐 목표를 달성할 수 있습니다.