비용 기반 퇴출과 TinyLFU 입장 정책을 갖춘, 빠르고 동시성 높은 Go용 메모리 제한 캐시 라이브러리입니다.
allegro/bigcache
GC 오버헤드를 낮게 유지하면서 힙에 많은 항목을 저장하는 빠른 Go용 동시성 지원 퇴거형 인메모리 캐시입니다.
- 스타
- 8,172
- 포크
- 620
- 열린 이슈
- 101
- 마지막 커밋
- 13일 전
어떤 프로젝트인가요?
BigCache는 가비지 컬렉터 때문에 프로그램 실행이 느려지지 않도록 많은 항목을 저장하는 데 초점을 둔 Go용 인메모리 캐시 라이브러리입니다. 항목은 GC가 하나씩 스캔하지 않는 바이트 슬라이스 형태로 힙에 저장되므로, 대부분의 사용 사례에서는 값을 바이트로 직렬화한 뒤 저장합니다.
캐시는 동시 접근을 위해 샤딩되어 있으며, 설정 가능한 LifeWindow가 지나면 항목을 퇴거하고 CleanWindow에 따라 만료된 항목을 정리합니다. 예상 부하에 맞춰 메모리를 미리 할당하거나, 메모리가 늘어나도록 둘 수 있으며, 선택적으로 MB 단위의 HardMaxCacheSize 상한을 설정할 수도 있습니다. 항목이 만료되거나 공간 제한에 도달하거나 명시적으로 삭제되면 선택적 콜백이 호출됩니다.
이 프로젝트는 Go 1.12 이상이 필요하며 캐시를 기반으로 하는 별도의 HTTP 서버 패키지도 포함합니다. 해시 충돌은 처리하지 않으므로, 같은 해시를 가진 새 항목이 기존 항목을 덮어씁니다.
핵심 기능
- 01GC 일시 정지 시간을 줄이기 위해 항목을 힙에 바이트 슬라이스 형태로 저장합니다.
- 02동시 읽기와 쓰기를 지원하는 샤딩 구조입니다.
- 03LifeWindow와 CleanWindow를 통해 시간 기반으로 항목을 퇴거합니다.
- 04HardMaxCacheSize로 선택적 메모리 상한을 설정할 수 있습니다.
- 05만료, 공간 부족, 삭제 시 호출되는 콜백을 지원합니다.
- 06캐시를 기반으로 하는 HTTP 서버 패키지를 포함합니다.
활용 사례
- 장시간 실행되는 Go 서비스에서 직렬화된 데이터를 기가바이트 단위로 캐싱합니다.
- 캐시 항목을 수백만 개 보유하는 서비스의 GC 오버헤드를 줄입니다.
- 시간 기반 만료를 지원하는 로컬 프로세스 내 캐시를 제공합니다.
빠른 시작
- 1
Go 프로젝트에 BigCache v3 모듈을 추가합니다
- 2
기본 설정(유효 기간 10분)으로 캐시를 생성합니다
- 3
항목을 바이트 슬라이스로 설정하고 가져옵니다
사용 전 알아둘 점
- 항목은 바이트 슬라이스로 직렬화해야 하므로 대부분의 사용 사례에서 추가 직렬화/역직렬화 코드가 필요합니다.
- BigCache는 해시 충돌을 처리하지 않습니다. 해시가 충돌하면 새 항목이 기존 값을 덮어씁니다.
토픽
자주 묻는 질문
- bigcache은(는) 무엇인가요?
- GC 오버헤드를 낮게 유지하면서 힙에 많은 항목을 저장하는 빠른 Go용 동시성 지원 퇴거형 인메모리 캐시입니다. BigCache는 가비지 컬렉터 때문에 프로그램 실행이 느려지지 않도록 많은 항목을 저장하는 데 초점을 둔 Go용 인메모리 캐시 라이브러리입니다. 항목은 GC가 하나씩 스캔하지 않는 바이트 슬라이스 형태로 힙에 저장되므로, 대부분의 사용 사례에서는 값을 바이트로 직렬화한 뒤 저장합니다.
- bigcache은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- bigcache은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- bigcache은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. bigcache의 마지막 커밋은 2026년 10월 12일입니다.
- bigcache은(는) 어디에 사용할 수 있나요?
- 장시간 실행되는 Go 서비스에서 직렬화된 데이터를 기가바이트 단위로 캐싱합니다. 캐시 항목을 수백만 개 보유하는 서비스의 GC 오버헤드를 줄입니다. 시간 기반 만료를 지원하는 로컬 프로세스 내 캐시를 제공합니다.
- bigcache는 어떻게 설치하나요?
- Go 프로젝트에 BigCache v3 모듈을 추가합니다 기본 설정(유효 기간 10분)으로 캐시를 생성합니다 항목을 바이트 슬라이스로 설정하고 가져옵니다
- bigcache은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/allegro/bigcache
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
설정된 최대 항목 수, 크기 또는 TTL에 도달하면 가장 오래 사용하지 않은 항목을 제거하는 JavaScript LRU 캐시입니다.
캐시, 데이터 구조 서버, 문서 저장소, 벡터 데이터베이스, 메시지 브로커로 사용되는 인메모리 데이터 저장소입니다.
React, Vue, Svelte, Solid 바인딩을 제공하는 웹 앱용 비동기 상태 관리 및 데이터 페칭 라이브러리입니다.
캐싱, 이미지 처리, 점진적 디코딩과 SwiftUI/UIKit 컴포넌트를 제공하는 Apple 플랫폼용 Swift 이미지 로딩 시스템입니다.
HAProxy는 TCP 및 HTTP 애플리케이션을 위한 무료 고속 리버스 프록시이자 로드 밸런서로, 고가용성과 트래픽 분산을 제공합니다.