DiskCache 개요 — 디스크로 키-값 캐시 확장
DiskCache 개요 — 디스크로 키-값 캐시 확장
DiskCache는 디스크와 파일 기반 캐시를 제공하는 순수 파이썬 라이브러리예요. Django 호환 API를 갖추고 있고, SQLite와 파일시스템을 결합해 작은 값은 DB에, 큰 값은 파일에 저장해요. 그래서 프로세스가 메모리를 다투는 대신 남는 디스크 공간을 활용할 수 있어요.
왜 이런 캐시가 필요한지 볼게요. Django의 파일 기반 캐시는 본질적으로 제대로 동작하지 않아요. culling이 비용이 크고, 큰 캐시는 반복적으로 많은 파일을 스캔하고 삭제해야 하죠. 항목이 1000개일 때 키 하나를 저장하는 데 60밀리초가 걸리는 상황은 용납하기 어려워요.
DiskCache의 해법은 단순해요. "각 연산, set과 del이 최대 2~10개의 만료된 키만 삭제"하게 하고, 각 get은 만료 여부만 확인해서 필요하면 삭제하는 방식이에요. 메타데이터와 작은 값은 SQLite에, 더 큰 값은 파일에 두는 하이브리드 구조로 속도를 확보하죠.
주요 특징은 이래요.
- 순수 파이썬 구현 (C 컴파일러 불필요, 별도 프로세스 불필요)
- 스레드 안전 + 프로세스 안전
- LRU, LFU 등 여러 축출 정책
tag메타데이터로 키 그룹 한 번에 축출- 값의
full_path참조, 원시 데이터 저장 가능 - SQLite 네이티브 타입(int, float, unicode, blob) 활용
- 100% 테스트 커버리지와 스트레스 테스트
빠르게 시작하려면 pip으로 설치하고 쓸 수 있어요.
pip install --upgrade diskcache
from diskcache import Cache, FanoutCache, DjangoCache
cache = Cache()
임베딩 결과나 API 응답처럼 다시 계산하기 비싼 값을 디스크에 캐싱하면 RAG 파이프라인에서 반복 비용을 크게 줄일 수 있어요.