NetCore6.0 Memory Cache simple

1. 필요한 패키지 설치

2. 메모리 캐시 사용하기

.NET Core에서 메모리 캐시를 사용하기 위해 IMemoryCache 인터페이스를 활용합니다. 이 인터페이스를 사용하려면 먼저 서비스 컨테이너에 등록해야 합니다. 이 작업은 주로 Startup.cs 파일의 ConfigureServices 메서드에서 이루어집니다.

3. 캐시에 데이터 저장 및 검색

캐시에 데이터를 저장하거나 검색하기 위해 IMemoryCache 인스턴스가 필요합니다. 이 인스턴스는 생성자 주입을 통해 얻을 수 있습니다.

다음은 간단한 컨트롤러 예시입니다. 여기서는 메모리 캐시를 사용하여 데이터를 저장하고 검색하는 방법을 보여줍니다.

CacheSampleController 클래스의 생성자에서 IMemoryCache 인터페이스를 주입받는 이유는 의존성 주입(Dependency Injection)을 통해 캐시를 관리하기 위함입니다.
의존성 주입은 클래스가 직접 필요한 객체를 생성하거나 관리하는 대신 외부에서 주입받아 사용할 수 있도록 하는 디자인 패턴입니다.
IMemoryCache 인터페이스는 ASP.NET Core에서 제공하는 메모리 기반 캐싱을 위한 인터페이스입니다.
이 인터페이스를 사용하면 캐시에 데이터를 저장하고 검색하는 기능을 손쉽게 구현할 수 있습니다.

생성자를 통해 IMemoryCache 인터페이스의 구현체를 주입받는 이유는 다음과 같습니다.

  1. 의존성 역전 원칙(Dependency Inversion Principle) 준수: 클래스가 직접 캐시를 생성하거나 관리하지 않고 외부에서 주입받아 사용함으로써 느슨한 결합을 유지할 수 있습니다.
    이는 코드의 유연성과 테스트 용이성을 향상시킵니다.
  2. 단일 책임 원칙(Single Responsibility Principle) 준수: CacheSampleController 클래스는 캐싱 로직에만 집중하고, 캐시 객체 자체를 생성하거나 관리하는 책임을 가지지 않습니다.
    이는 클래스의 기능을 단순화하고 유지보수를 용이하게 합니다.
  3. 테스트 용이성: 의존성 주입을 통해 캐시 객체를 주입받기 때문에 테스트에서 쉽게 모의(Mock) 객체를 주입하여 테스트할 수 있습니다. 이는 단위 테스트 작성을 용이하게 합니다.
  4. 재사용성: IMemoryCache 인터페이스를 주입받기 때문에 캐시 객체의 구체적인 구현에 종속되지 않습니다.


따라서 이 클래스는 다른 종류의 캐시 구현체로 쉽게 교체될 수 있습니다.

Dependency Injection”의 라틴어 어원은 다음과 같습니다:

“Dependency”는 “dependere”에서 유래되었으며, “의존”을 의미합니다.
“Injection”은 “injectio”에서 유래되었으며, “주입”을 의미합니다.
따라서 “Dependency Injection”은 “의존 주입”이라는 뜻입니다.