본문 바로가기
Q&A2022년 5월 16일1분 읽기

Redis를 캐시로 쓰는 기본 패턴

황
황다은
조회 971댓글 1

API 응답이 느려서 Redis 캐시를 도입하려고 합니다. 기본적인 캐싱 패턴을 알려주세요.

댓글 1

김김영삼4년 전

Redis 캐시 기본 패턴 (Cache-Aside):

const redis = require("redis").createClient();

async function getUser(id) {
// 1. 캐시 확인
const cached = await redis.get(`user:${id}`);
if (cached) return JSON.parse(cached);

// 2. DB 조회
const user = await db.user.findById(id);

// 3. 캐시에 저장 (TTL 5분)
await redis.setEx(`user:${id}`, 300, JSON.stringify(user));

return user;
}

// 데이터 변경 시 캐시 무효화
async function updateUser(id, data) {
await db.user.update(id, data);
await redis.del(`user:${id}`); // 캐시 삭제
}

캐싱 패턴:

  • Cache-Aside — 위 패턴. 가장 흔함
  • Write-Through — 쓰기 시 캐시도 함께 업데이트
  • Write-Behind — 캐시에 먼저 쓰고 나중에 DB 반영

주의: 캐시 무효화가 가장 어렵습니다. TTL을 적절히 설정하고, 데이터 변경 시 반드시 캐시를 삭제하세요.

Ctrl+Enter로 등록