Spring Boot 使用Caffeine緩存


  Spring Boot 使用Caffeine緩存

  Caffeine官方的介紹

  demo

  Caffeine配置參數

  Caffeine是Java8重寫Guava緩存,取代Guava緩存。

  Spring Cache相關注解基礎請查看這篇文章

  Caffeine官方的介紹

  caffeine官網

  Caffeine是基於Java8的高性能,接近完美的緩存庫。

  demo

  pom.xml

  引入spring-context-support

  com.github.ben-manes.caffeine

  caffeine

  2.8.0

  org.springframework

  spring-context-support

  或者spring-boot-starter-cache

  com.github.ben-manes.caffeine

  caffeine

  2.8.0

  org.springframework.boot

  spring-boot-starter-cache

  Caffeine配置參數

  屬性  說明

  initalCapacity  初始空間大小

  maximumSize  緩存最大條數

  maximumWeight  緩存的最大權重

  expireAfterAccess  最后一次寫入或訪問后經過固定時間過期

  expireAfterWrite  最后一次寫入后經過固定時間過期

  refreshAfterWrite  創建緩存或者最近一次更新緩存后經過固定的時間間隔,刷新緩存

  weakKeys  打開key的弱引用

  weakValues  打開value的弱引用

  softValues  打開value的軟引用

  recordStats  開發統計功能

  注意

  refreshAfterWrite 要實例 LoadingCache 否則報錯

  java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache

  application.yml

  spring:

  cache:

  cache-names:

  - cache1

  - cache2

  type: caffeine

  caffeine:

  spec:鄭州人流手術費用 http://www.zzzzyy120.com/

  maximumSize=500,expireAfterAccess=600s

  yml文件中的配置也可以通過bean來配置

  CacheConfig.java

  package com.jsong.wiki.blog.config;

  import com.github.benmanes.caffeine.cache.CacheLoader;

  import com.github.benmanes.caffeine.cache.Caffeine;

  import org.checkerframework.checker.nullness.qual.NonNull;

  import org.checkerframework.checker.nullness.qual.Nullable;

  import org.springframework.cache.CacheManager;

  import org.springframework.cache.caffeine.CaffeineCacheManager;

  import org.springframework.context.annotation.Bean;

  import org.springframework.context.annotation.Configuration;

  import java.util.concurrent.TimeUnit;

  @Configuration

  public class CacheConfig {

  @Bean("caffeineCacheManager")

  public CacheManager caffeineCacheManager() {

  CaffeineCacheManager cacheManager = new CaffeineCacheManager();

  cacheManager.setCaffeine(Caffeine.newBuilder()

  .maximumSize(10_1000)

  .expireAfterAccess(5, TimeUnit.SECONDS));

  return cacheManager;

  }

  /* 如果配置refreshAfterWrite要有這個bean,否則報錯

  java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache*/

  @Bean

  public CacheLoader cacheLoader() {

  CacheLoader cacheLoader = new CacheLoader() {

  @Nullable

  @Override

  public Object load(@NonNull Object key) throws Exception {

  return null;

  }

  };

  return cacheLoader;

  }

  }

  CacheService.java

  package com.jsong.wiki.blog.service;

  import org.springframework.cache.annotation.*;

  import org.springframework.stereotype.Component;

  @EnableCaching

  @CacheConfig(cacheNames = "caffeineCacheManager")

  @Component

  public class CacheService {

  @Cacheable(value = "cache1", key = "#root.target")

  public String getName() {

  System.out.println("cache1");

  return "cache1";

  }

  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM