로컬 캐시를 springboot (구아바 카페인)

1. 현장 설명

등으로 인해하지 특정 레디 스는, 논의 과정을 기록하지 왜 프로젝트에 로컬 캐시를 사용하려면, 필요로하는 친구를 도울 수 있도록 노력하겠습니다.

2. 솔루션

2.1 로컬 캐시로 구글의 구아바를 사용하여

초기 아이디어 때문에 프로젝트 자체 denpency의가 구글의 구아바, 구아바를 사용하는 것입니다.

2.1.1 치어 파일

그것은 다음과 같은 세 가지 의존성이 필요합니다

  <!--软件老王 1-->
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
  </dependency>
  <!--软件老王 2-->
    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.18.RELEASE</version>
  </dependency>
   <!--软件老王 3-->
   <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>24.0-jre</version>
     </dependency>

2.1.2 자바 클래스

(1) GuavaCacheManager

새로운 콩, 구아바 반환 및 GuavaCacheManager의 구성.

import com.google.common.cache.CacheBuilder;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.guava.GuavaCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;
/**
* 
* @auther: 软件老王
*/
@Configuration
@EnableCaching
public class GuavaCacheConfig {

    @Bean
    public CacheManager cacheManager() {
        GuavaCacheManager cacheManager = new GuavaCacheManager();
        cacheManager.setCacheBuilder(
                CacheBuilder.newBuilder().
                        expireAfterWrite(6, TimeUnit.HOURS).
                        maximumSize(1000)); //软件老王,6小时过期,最大1000条
        return cacheManager;
    }
}

(2) 스프링 주석 레이블 사용 캐싱

/**
* 
* @auther: 软件老王
*/
  @Cacheable(value = "ruanjianlaowang")
    public VO<UserParm> getUserInfo(String token) {
        VO<UserParm> vo = userauthClient.verifyToken(token);
        return vo;
    }

구아바 로컬 캐시가 완료됩니다.

2.2 스프링 프레임 워크는 로컬 캐싱 방식을 제공합니다

봄은 이미 단지 당신이, 당신은 유형을 구성 할 수 있습니다 디폴트의 부하 항아리 패키지를 구성해야하는 추상 클래스를 제공하지만 spring5는, 구아바 위드, 카페인으로 대체되기 시작, 봄 구아바보다 로컬 캐시 카페인과 같이 테스트를 할 많은 이상으로, 우리는 또한 로컬 캐시로 카페인을 변경했습니다.

springboot와 구아바, 카페인과 다른 로컬 캐시, springboot1, 구아바가 있었다 제거 캐시 인터페이스 내부에 넣어 구아바를 springboot2, 그래서 구아바의 앞에 로컬 캐시 만 다음은 여기에 내부 구성 파일에 정의해야합니다 구성을 정의해야 타입은 자동으로 분사된다.

2.3 카페인 로컬 캐시

2.3.1 치어 파일
        <!--软件老王-->
       <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
            <version>2.8.0</version>
        </dependency>
2.3.2 프로필
spring:
   cache:
      type: caffeine
      cache-names: bc.gateway.ut
      caffeine:
#        spec: maximumSize=5000,expireAfterWrite=20s
         spec: maximumSize=5000,expireAfterAccess=3600s

즉 특정 매개 변수 :

/**
* @auther: 软件老王
*/
• initialCapacity=[integer]: 初始的缓存空间大小
• maximumSize=[long]: 缓存的最大条数
• maximumWeight=[long]: 缓存的最大权重
• expireAfterAccess=[duration]: 最后一次写入或访问后经过固定时间过期
• expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期
• refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存
2.3.3 사용 또는 봄 라벨은 이동하지 않습니다 :
/**
* 
* @auther: 软件老王
*/
  @Cacheable(value = "ruanjianlaowang")
    public VO<UserParm> getUserInfo(String token) {
        VO<UserParm> vo = userauthClient.verifyToken(token);
        return vo;
    }

봄에 캐시 태그의 2.4 설명

네 개의 탭 :

(1) @Cacheable가 먼저 캐시 아니라면, 실행에있어서를 쿼리가 실행 된 후, 리턴 값은 캐시를 넣어;

(2) @CachePut은 어떤 쿼리가 결정되지 않거나, 캐시 내용 업데이트 추가 또는 이와 유사한 업데이트를 직접 추가됩니다

유사 (3) @CacheEvict, 직접 제거, 삭제합니다.

(4) @ 캐싱 조합 1,2,3

스프링 구성 파일에 정의 된 캐시 이름, 당신은 적어도 하나를 지정해야합니다 例如 : @Cacheable (값 = "laowang_cache1") @Cacheable (값 = { ""laowang_cache1 "laowang_cache2"}
당신이 SpEL을 지정하지 않을 경우 기본 매개 변수는 모든 방법에 따라 결합, 표현에 따라 작성 지정하려면 캐시 키는 비어있을 수 있습니다 @Cacheable (값 = "laowang_cache1"키 = "# userName을")
조건 버퍼 조건, 비어있을 수 있으며, SpEL을 쓰기는 단지 캐싱 사실, true 또는 false를 반환 @Cacheable (값 = "laowang_cache1"상태 = "#의 userName.length ()> 11")

나는 "소프트웨어 바로는,"나는 다음 노래를 초점을 나는 수도 경우, 이후의 업데이트 초 알고 있다고 생각 해요! 오신 것을 환영합니다 포럼, 번호의 이름을 딴 공공 메시지 교환!

추천

출처www.cnblogs.com/ruanjianlaowang/p/11651943.html