spring cloud hystrix 캐 시 요청(request cache)

Hstrix 는 요청 결 과 를 캐 시 하 는 것 을 지원 합 니 다.다음 같은 key 를 가 진 요청 은 캐 시 에서 결 과 를 직접 꺼 내 요청 비용 을 줄 입 니 다.이 기능 을 사용 하려 면 HystrixRequestContext 를 관리 해 야 합 니 다.B 에 게 요청 한 결과 캐 시 를 사용 하려 면 A 와 B 가 같은 context 에 있어 야 합 니 다.HystrixRequestContext.initializeContext()와 context.shutdown()을 통 해 context 를 구축 할 수 있 습 니 다.이 두 문장 간 의 모든 요청 은 같은 context 에 있 습 니 다.물론 이 관리 과정 은 사용자 정의 filter 를 통 해 이 루어 질 수 있 습 니 다.이전 글https://www.jb51.net/article/140527.htm을 참고 하 십시오.
Hystrix 캐 시 주석 요청
@CacheResult 가 이 주 해 를 추가 하 는 방법 은 캐 시 를 요청 합 니 다.기본적으로 이 방법의 모든 매개 변 수 는 캐 시 키 입 니 다.즉,이 방법의 모든 매개 변수 가 일치 할 때 만 캐 시 를 실행 합 니 다.

@Service
public class UserCacheService {
  @Autowired
  private UserFeignClient userFeignClient;

  /**
   * @HystrixCommand  requestCache.enabled          
   *     @CacheResult    ,  requestCache.enabled=true
   * @param id    id
   * @return      
   */
  @CacheResult
  @HystrixCommand(commandProperties = {
      @HystrixProperty(name="requestCache.enabled",value = "true")
  })
  public User findUserById(Integer id){
    return userFeignClient.findUserById(id);
  }
}
requestCache.enabled 가 false 로 설정 되면@CacheResult 를 추가 하 더 라 도 캐 시가 작 동 하지 않 습 니 다.
@CacheKey 이 주석 을 통 해 캐 시 키 를 지정 할 수 있 습 니 다.

 @CacheResult
  @HystrixCommand(commandProperties = {
      @HystrixProperty(name="requestCache.enabled",value = "true")
  })
  public User findUserByIdAndName(@CacheKey Integer id,String name){
    return userFeignClient.findUserById(id);
  }
위의 코드 는@CacheKey 로 id 필드 를 수 정 했 습 니 다.id 와 같은 요청 이 있 으 면 기본적으로 캐 시 를 실행 합 니 다.name 필드 와 상 관 없 이@CacheResult 의 cacheKeyMethod 속성 을 지정 하면@CacheKey 주석 이 잘못 되 었 습 니 다.
@CacheRemove 이 주석 은 캐 시 를 무효 화 하 는 역할 을 합 니 다.

/**
   *   @CacheRemove        findUserById          
   * @param id    id
   * @param name     
   * @return      
   */
  @CacheResult
  @CacheRemove(commandKey = "findUserById")
  @HystrixCommand(commandProperties = {
      @HystrixProperty(name="requestCache.enabled",value = "true")
  })
  public User findUserByIdAndName2(@CacheKey Integer id,String name){
    return userFeignClient.findUserById(id);
  }
상기 코드 는@CacheRemove 의 속성 commandKey 의 값 을 findUserById 로 지 정 했 습 니 다.findUserById 를 호출 할 때 이 방법의 캐 시 는 삭 제 됩 니 다.
전체 코드 참조:https://github.com/jingangwang/micro-service
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기