💴
SpringBoot × Kotlin × Caffeine でキャッシュを利用する
Caffeine とは
リポジトリ
Guava's Cache is the predecessor library and the adapters provide a simple migration strategy.
とある通り、 Google Guava の Cache が前身の Java 8 で書かれたキャッシュライブラリが Caffeine
使っていく
依存関係の追加
build.gradle.kts
implementation("org.springframework.boot:spring-boot-starter-cache")
implementation("com.github.ben-manes.caffeine:caffeine")
キャッシュの機能を有効化する
Configuration クラスに@EnableCaching を貼る
import org.springframework.cache.annotation.EnableCaching
import org.springframework.context.annotation.Configuration
@Configuration
@EnableCaching
class CacheConfiguration {
...
}
キャッシュしたいオブジェクトを返却する関数に設定を追加
@Cacheable("cacheA")
fun getUserId(): String{
// String型のユーザIDを返却する
}
有効化するには @Cacheable
を使いましたが、更新(@CachePut
)削除(@CacheEvit
) も存在しています。
詳細についてはこちらのサイトが詳しく書かれています。
Caffeine の設定
ざっくりとした説明は SpringBoot の公式ドキュメントにも記載されてます。
application.ymlにキャッシュの設定を記述します
spec に記載した内容でキャッシュの生存期間やキャッシュするサイズを設定できます。
下記記載だと最大サイズが 500 で最後にキャッシュにアクセスされてから 10 分間経過すると削除されます。
spring:
cache:
cache-names: "cacheA"
caffeine:
spec: "maximumSize=500,expireAfterAccess=600s"
設定できる他のパラメータだと、 expireAfterWrite (最初にキャッシュが作られてから指定した時間経過するとキャッシュが削除される) を設定することが多いかと思います。
他設定できるパラメータについては javadoc を参照ください。
参考文献
Discussion