Springboot Caffine 로 컬 캐 시 사용 예시
의지 하 다
<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]
 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.