DiskCache 개요 — 디스크로 키-값 캐시 확장

DiskCache 개요 — 디스크로 키-값 캐시 확장

DiskCache는 디스크와 파일 기반 캐시를 제공하는 순수 파이썬 라이브러리예요. Django 호환 API를 갖추고 있고, SQLite와 파일시스템을 결합해 작은 값은 DB에, 큰 값은 파일에 저장해요. 그래서 프로세스가 메모리를 다투는 대신 남는 디스크 공간을 활용할 수 있어요.

출처: https://grantjenks.com/docs/diskcache/index.html

왜 이런 캐시가 필요한지 볼게요. Django의 파일 기반 캐시는 본질적으로 제대로 동작하지 않아요. culling이 비용이 크고, 큰 캐시는 반복적으로 많은 파일을 스캔하고 삭제해야 하죠. 항목이 1000개일 때 키 하나를 저장하는 데 60밀리초가 걸리는 상황은 용납하기 어려워요.

DiskCache의 해법은 단순해요. "각 연산, setdel이 최대 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 파이프라인에서 반복 비용을 크게 줄일 수 있어요.

더 알아보기