Springboot Caffine 로 컬 캐 시 사용 예시

Caffine 은 자바 8 을 사용 하여 Guava 캐 시 에 대한 재 작성 버 전 성능 이 크게 향상 되 었 습 니 다.
의지 하 다

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <!-- caffeine -->
    <dependency>
      <groupId>com.github.ben-manes.caffeine</groupId>
      <artifactId>caffeine</artifactId>
      <version>2.7.0</version>
    </dependency>
2.캐 시 설정,단독으로 사용
Bean 만 설정 하면 됩 니 다.그리고 데이터 읽 기와 쓰 기 를 진행 합 니 다.여기 에는 강력 한 사용자 정의 설정 이 많이 제공 되 어 있 습 니 다.문서 의 상세 한 설정 을 볼 수 있 습 니 다.

//    ,     
  @Bean
  public LoadingCache expiryCache(){
    LoadingCache<String, Object> loadingCache = Caffeine.newBuilder()
        .initialCapacity(100)
        .maximumSize(1000)
        //    /    
        .writer(new CacheWriter<Object, Object>() {
          @Override
          public void write(Object key, Object value) { //         
            System.out.println("--    --:key=" + key + ", value=" + value);
          }
          @Override
          public void delete(Object key, Object value, RemovalCause cause) { System.out.println("--    --:key=" + key); }
        })
        .expireAfterAccess(1, TimeUnit.MINUTES) //    
        .build((String key)->"     "); //cacheload   ,      
    loadingCache.put("name","  ");
    return loadingCache;
  }
테스트 사용:

@Autowired
  private LoadingCache loadingCache;
  @GetMapping("/get")
  public Object getValue(String key){
    return loadingCache.get(key);
  }
  @GetMapping("/add")
  public void addValue(String value){
    loadingCache.put(value,value);
  }
  @GetMapping("/delete")
  public void deleteValue(String key){
    loadingCache.invalidate(key);
    loadingCache.invalidateAll();//    
  }
  @GetMapping("/refresh")
  public void refreshValue(String key){
    //      build       cacheload    
    loadingCache.refresh(key);
  }
3.CacheManager 설정,spring 캐 시 주석 과 함께 사용

//  CacheManager
  @Bean(name = "caffeine")
  public CacheManager cacheManagerWithCaffeine() {
    CaffeineCacheManager cacheManager = new CaffeineCacheManager();
    Caffeine caffeine = Caffeine.newBuilder()
        //cache      
        .initialCapacity(100)
        //maximumSize    cache       ,maximumSize maximumWeight(    )       ,
        .maximumSize(1000)
        //               
        .expireAfterAccess(500, TimeUnit.SECONDS)
        //           ,    cacheLoader
        .refreshAfterWrite(10, TimeUnit.SECONDS);
    cacheManager.setCaffeine(caffeine);
    cacheManager.setCacheLoader(cacheLoader);
    cacheManager.setCacheNames(names);//          cache,    cache       
    cacheManager.setAllowNullValues(false);//       
    return cacheManager;
  }
cacheload 설정

/**
   *        Bean,refreshAfterWrite       
   */
  @Bean
  public CacheLoader<Object, Object> cacheLoader() {
    return new CacheLoader<Object, Object>() {
      @Override
      public Object load(Object key) throws Exception { return null;}
      //        oldValue     ,      
      @Override
      public Object reload(Object key, Object oldValue) throws Exception {
        System.out.println("--refresh--:"+key);
        return oldValue;
      }
    };
  }
다른 것 은 service 에서 spring 의 캐 시 주 해 를 설정 하여 사용 하면 됩 니 다.여기 캡 처 한 장 을 놓 습 니 다.이 주해 용법 들 은 인터넷 에 많 습 니 다.[/code]

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기