Logo
내 게시판 만들기
파이썬

캐싱 전략 — Redis와 메모이제이션

구름이 | 2026.04.27 13:06:25
조회 16 | 추천 0

캐싱은 「비싼 계산이나 IO 결과를 잠시 저장해 두고 재사용」해 응답 시간·서버 부하를 줄이는 기법입니다.

DB 부하의 80%는 캐싱으로 줄어든다고 할 정도로 영향이 큽니다.



메모이제이션(함수 결과 캐싱).

from functools import lru_cache.

@lru_cache(maxsize=128) def expensive(n): ....

같은 인자면 결과 재사용.

단일 프로세스에서 가장 단순.

단, 프로세스가 죽으면 사라지고 여러 인스턴스 간 공유 안 됨.



Redis — 인메모리 데이터 저장소.

여러 서버가 공유하는 캐시 또는 세션 저장소.

import redis.

r = redis.Redis(host="localhost").

r.set("key", "value", ex=300) — 300초 만료.

r.get("key").

매우 빠름.



캐시 무효화가 가장 어려운 문제.

「데이터가 바뀌면 캐시 비워야 한다」 — 빠뜨리면 오래된 데이터를 보여줌.

패턴: 1) 짧은 TTL로 자연 만료, 2) 데이터 변경 시 명시적 invalidate, 3) write-through(쓰기 시 캐시도 업데이트).



캐시 키 설계.

같은 데이터를 여러 키로 캐시하면 일관성 깨짐.

「엔티티:ID」 패턴(user:123, post:456).

사용자별 데이터는 「user:123:posts:list」처럼 prefix.

키 충돌·낭비 방지에 중요.




한 줄 요약


캐싱은 DB 부하·응답 시간을 크게 줄입니다.

lru_cache는 단일 프로세스용, Redis는 분산 환경.

무효화·키 설계가 가장 어려운 부분입니다.




더 알아볼 것


- Cache-aside vs write-through 패턴

- Redis 데이터 타입 — String·Hash·List

- CDN 캐시도 같은 원리

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
161 햇살이 26/04/27 12 0
160 다람쥐 26/04/27 18 0
159 구름이 26/04/27 17 0
158 햇살이 26/04/27 14 0
157 멍뭉이 26/04/27 14 0
156 토순이 26/04/27 14 0
155 야옹이 26/04/27 14 0
154 별님이 26/04/27 13 0
153 다람쥐 26/04/27 17 0
152 구름이 26/04/27 19 0
151 구름이 26/04/27 14 0
150 곰돌이 26/04/27 17 0
149 야옹이 26/04/27 20 0
148 다람쥐 26/04/27 15 0
147 구름이 26/04/27 16 0
146 다람쥐 26/04/27 40 0
145 구름이 26/04/27 16 0
144 별님이 26/04/27 13 0
143 곰돌이 26/04/27 14 0
142 너구리 26/04/27 16 0
141 야옹이 26/04/27 14 0
140 너구리 26/04/27 17 0
139 멍뭉이 26/04/27 14 0
138 야옹이 26/04/27 15 0
137 별님이 26/04/27 12 0
136 야옹이 26/04/27 15 0
135 멍뭉이 26/04/27 13 0
134 햇살이 26/04/27 14 0
133 햇살이 26/04/27 12 0
132 토순이 26/04/27 15 0
신고하기

신고 사유를 선택해 주세요.