Go向けの高速な並行メモリ制限型キャッシュライブラリ。コストベースの追い出しとTinyLFUによる登録判定に対応。
allegro/bigcache
大量のエントリをヒープ上に保持しながらGC負荷を抑える、Go向けの高速な並行処理対応・自動削除型インメモリキャッシュ。
- スター
- 8,172
- フォーク
- 620
- 未解決の Issue
- 101
- 最終コミット
- 13 日前
これは何?
BigCacheは、ガベージコレクターによってプログラムの処理速度が落ちないよう、大量のエントリを保持できる設計のGo向けインメモリキャッシュライブラリです。エントリはGCが個別に走査しないbyte sliceとしてヒープ上に保持されるため、多くのユースケースでは値をbyte列にシリアライズしてから保存します。
キャッシュは並行アクセスに対応するためシャーディングされており、設定可能なLifeWindowの経過後にエントリを削除します。CleanWindowでは、期限切れのエントリを削除する頻度を指定します。想定される負荷に基づいてメモリを事前確保することも、上限を設けずに拡張させることもでき、オプションでHardMaxCacheSize(MB単位)の上限を設定できます。期限切れ、容量制限、明示的な削除によってエントリが削除された際に呼び出されるコールバックも設定できます。
このプロジェクトにはGo 1.12以降が必要で、キャッシュを基盤とするHTTPサーバーパッケージも別途含まれています。ハッシュの衝突には対応していません。同じハッシュを持つ新しい項目を追加すると、既存の項目が上書きされます。
主な機能
- 01GCの停止時間を短縮するため、エントリをヒープ上のbyte sliceとして保存します。
- 02読み書きの並行処理に対応したシャーディング設計です。
- 03LifeWindowとCleanWindowによる時間ベースの削除に対応します。
- 04HardMaxCacheSizeでメモリ使用量に任意の上限を設定できます。
- 05期限切れ、容量超過、削除時に呼び出されるコールバックを設定できます。
- 06キャッシュを基盤とするHTTPサーバーパッケージが含まれています。
ユースケース
- 長時間稼働するGoサービスで、シリアライズ済みデータを数GB規模でキャッシュする。
- 数百万件のキャッシュエントリを保持するサービスで、GC負荷を抑える。
- 有効期限を設定できるローカルのプロセス内キャッシュを提供する。
クイックスタート
- 1
Go プロジェクトに BigCache v3 モジュールを追加する
- 2
デフォルト設定(有効期間は10分)でキャッシュを作成する
- 3
エントリをバイトスライスとして設定・取得する
使う前に知っておきたいこと
- エントリはバイトスライスにシリアライズする必要があるため、多くの用途では追加のシリアライズ/デシリアライズ処理が必要です。
- BigCache はハッシュ衝突を処理しません。ハッシュが衝突すると、新しいアイテムが既存の値を上書きします。
トピック
よくある質問
- bigcache とは?
- 大量のエントリをヒープ上に保持しながらGC負荷を抑える、Go向けの高速な並行処理対応・自動削除型インメモリキャッシュ。 BigCacheは、ガベージコレクターによってプログラムの処理速度が落ちないよう、大量のエントリを保持できる設計のGo向けインメモリキャッシュライブラリです。エントリはGCが個別に走査しないbyte sliceとしてヒープ上に保持されるため、多くのユースケースでは値をbyte列にシリアライズしてから保存します。
- bigcache は無料で使えますか?ライセンスは?
- bigcache は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- bigcache は今もメンテナンスされていますか?
- 活発にメンテナンス中。bigcache の最終コミットは 2026年10月12日 です。
- bigcache は何に使えますか?
- 長時間稼働するGoサービスで、シリアライズ済みデータを数GB規模でキャッシュする。 数百万件のキャッシュエントリを保持するサービスで、GC負荷を抑える。 有効期限を設定できるローカルのプロセス内キャッシュを提供する。
- bigcache のインストール方法は?
- Go プロジェクトに BigCache v3 モジュールを追加する デフォルト設定(有効期間は10分)でキャッシュを作成する エントリをバイトスライスとして設定・取得する
- bigcache はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/allegro/bigcache
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
設定した件数、サイズ、TTLの上限に達すると、最も長く使われていない項目を削除するJavaScript製LRUキャッシュです。
キャッシュ、データ構造サーバー、ドキュメントストア、ベクトルデータベース、メッセージブローカーとして使えるインメモリデータストア。
React、Vue、Svelte、Solid向けのバインディングを備えた、Webアプリ用の非同期状態管理・データ取得ライブラリ。
キャッシュ、画像処理、プログレッシブデコード、SwiftUI/UIKitコンポーネントを備えたAppleプラットフォーム向けSwift画像読み込みシステム。
HAProxyは、TCPおよびHTTPアプリケーション向けの高速なフリーのリバースプロキシ兼ロードバランサーで、高可用性とトラフィック分散を実現します。