ページ内ナビ
概要
CaffeineはJava向けのhigh-performance in-memory cache libraryです。Guavaに近いbuilder APIでcacheを構成し、size-based eviction、time-based expiration、refresh、async loading、statisticsなどを組み合わせてapplication process内の再利用dataを管理できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
sizeとtime policyを組み合わせてentryをevictする
maximum sizeやaccess/writeからの経過時間を条件にentryを自動的にevictし、memory使用量とdata freshnessを制御できます。
出典:[1]
loading・async処理・refreshでcache missと更新を扱う
LoadingCacheやasync loadingを使ってcache miss時の生成処理を組み込み、refreshAfterWriteでstale entryの更新をbackgroundへ寄せられます。
出典:[1]
reference・removal listener・statisticsを用途に合わせて追加する
weak/soft reference、entry removal notification、cache access statisticsなどを選択し、lifecycleと観測性を用途に合わせて構成できます。
出典:[1]
向いている用途
同一JVM内で高コスト処理やI/O結果を再利用したい場合に向く
database/API lookup、metadata、計算結果など、短時間に繰り返し参照されるdataをapplication process内で低latencyに再利用する用途に向きます。
出典:[1]
導入前の確認
distributed cacheではなく各process内のlocal stateとして扱う
Caffeineはin-memory libraryなので、複数instance間でentryを自動共有しません。cluster全体で厳密な一貫性が必要ならexternal cacheやsource-of-truthとの同期設計が必要です。
出典:[1]
eviction・expiration・refresh policyを実workloadで調整する
cache sizeを大きくし過ぎるとheapを圧迫し、小さ過ぎるとmissが増えます。stale data許容時間、refresh cost、hot-key patternをproductionに近いloadで評価します。
参考にした公式資料
- [1]Caffeine v3.3.0 README(2026-10-03)
- [2]Caffeine v3.3.0 release(2026-10-03)
- [3]Caffeine Apache-2.0 license(2026-10-03)
編集部からの補足
database/API accessや高コスト計算の結果を同一process内で再利用したいJava applicationに適します。高速でもcacheは正本ではないため、失効条件、最大size、stale data許容時間、cache miss時の負荷を実trafficに合わせて設計してください。
3ステップで試す
- 1
Caffeine 3.3.0をMaven cacheへ取得する
Java 11以上とMavenを使い、Caffeine 3.3.0と公開API dependencyを含むruntime classpathをlocalに生成します。
mkdir caffeine-demo && cd caffeine-demo && printf '%s\n' '<project xmlns="http://maven.apache.org/POM/4.0.0"><modelVersion>4.0.0</modelVersion><groupId>demo</groupId><artifactId>caffeine-demo</artifactId><version>1.0</version><dependencies><dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.3.0</version></dependency></dependencies></project>' > pom.xml && mvn -q dependency:build-classpath -Dmdep.outputFile=classpath.txt - 2
最小cache操作のJShell scriptを作成する
maximumSizeを持つprocess-local cacheへ値をput/getするだけのscriptを用意します。
printf '%s\n' 'import com.github.benmanes.caffeine.cache.*;' 'var cache = Caffeine.newBuilder().maximumSize(10).build();' 'cache.put("key", "value");' 'System.out.println(cache.getIfPresent("key"));' '/exit' > caffeine.jsh - 3
JShellでcache動作を確認する
caffeine-demo directory内で実行し、valueと表示されればcacheの生成・保存・取得をlocal JVM内で確認できます。
jshell --class-path "$(cat classpath.txt)" caffeine.jsh
成長
成長の推移 · 直近30日
17,882 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 53
- Open PR
- 0
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
GitHubのデータGitHubの詳細データを見る
- Stars
- 17,882
- Forks
- 1,721
- Watchers
- 359
- Open Issues
- 1
- Contributors
- 69
- 所有者種別
- User
- 主要言語
- Java
- ライセンス
- Apache-2.0
- リポジトリ最終更新
- 2026/09/30
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- OpenPDF4,373 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
JVMアプリへPDFの生成、変換、保護を組み込む
Java - Apache Commons Lang3,013 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
Java標準APIの不足を文字列・配列・数値・リフレクションなどの汎用ユーティリティで補う
Java - Memcached14,287 Stars
共通タグ 2件
再生成可能なhot dataをmemoryへ置き、database/APIのread負荷を下げるkey/value cache
C - DBeaver51,949 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
多数のdatabaseを一つのdesktop SQL workspaceから操作する
Java - Netty35,065 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
event loopとChannel pipelineを組み合わせ、高接続数のprotocol server/clientをJavaで構築する
Java - OpenAPI Generator26,772 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
OpenAPI contractからclient SDK・server stub・documentationを多数のlanguage/frameworkへ生成するcode generator
Java
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。