캐싱 - Caching

Caching

설명

캐시 기능을 사용하여 빈번한 참조 데이터를 빠르게 사용할 수 있도록 한다. 기본적으로 Dotnet의 MemoryCachearrow-up-right를 통해 구현이 되어 있으며, 다른 캐시 시스템으로도 교체할 수 있습니다.

Memory Caching

예제

위 예제에서의 ICacheManager를 삽입하고 MySampleCache라는 캐시를 가져옵니다. 캐시 이름은 대소 문자를 구분하므로 "MyCache"와 "MYCACHE"는 다른 캐시값을 관리하게 됩니다.

엔티티 캐싱

Axs의 캐시 시스템은 일반용이지만 엔티티를 캐시하려는 경우 도움이 될 수 있는 EntityCache 기본 클래스가 있습니다. 데이터베이스에서 반복적으로 쿼리하지 않도록 해당 ID로 엔티티를 가져오고 이를 Id로 캐시하려는 경우 기본 클래스를 사용할 수 있습니다. 다음과 같은 Sample 엔티티가 있다고 가정합니다 :

우리가 Id를 알고 있는 동안 사람들의 이름을 자주 얻고 싶다고 가정 합니다. 먼저 캐시 항목을 저장 할 클래스를 만듭니다.

필수는 아니지만 캐시 클래스에 대한 인터페이스를 정의 할 수 있습니다.

마지막으로 Sample 엔터티를 캐시하는 캐시 클래스를 만들 수 있습니다.

이제 사용자 캐시를 사용할 준비가 되었습니다.

사용자의 샘플명이 필요할 때마다 샘플의 Id를 사용하여 캐시에서 가져올 수 있습니다. 다음은 샘플 캐시를 사용하는 예제 클래스입니다.

간단히 ISampleCache를 주입(injectedarrow-up-right)하고 캐시 항목을 얻은 다음 Name 속성을 얻었습니다.

확인

SampleAppController를 통한 확인

SampleAppController.cs 파일에서 GetSampeByCache1, GetSampeByCache2 메서드를 통해 확인 가능하다.

Swagger를 통한 확인

picture 5

GetSampleByCache1을 Swagger에서 호출해서 확인할 수 있다. picture 6 파라메터를 1로 입력하고 'Execute' 버튼을 누르면 데이터를 가져온다. 이때 가져온 데이터와, 데이터베이스에서 직접 수정하여도 같은 데이터를 가져오면 캐시 기능이 정상적으로 동작하는 것을 확인 할 수 있다. (기본 60분 유지 됨)

picture 7

아래 코드를 통해서 유지 시간 조절 가능합니다.

Custom SampleCache 사용을 SampleAppController를 통한 확인

기본 제공된 캐시 매니저 대신에 사용자 정의 캐시를 사용할 수 있다.

기본 클래스 선언

SampleAppController에서 아래 코드처럼 사용하면 됩니다.

Custom SampleCache 클래스 사용을 스웨거에서 확인

/api/services/app/Sample/GetUserNameById을 스웨거를 통해서 호출해서 값을 확인할 수 있습니다.

picture 8

결과 값

picture 9

다중 테넌트를 지원하는 Custom SampleCache 사용을 SampleAppController를 통한 확인

SampleCache는 다중 테넌트를 지원하지 않는 클래스로서 다른 테넌트에서도 키만 같으면 같은 값을 가져올 수 있습니다. 그래서 다중 테넌트를 지원하는 캐시를 사용하면 같은 키라도 다른 값으로 리턴이 됩니다.

다중 테넌트를 지원 하는 기본 클래스 선언

SampleAppController에서 아래 코드처럼 사용하면 됩니다.

다중 테넌트를 지원하는 Custom SampleCache 클래스 사용을 스웨거에서 확인

picture 10
picture 13

Last updated