ASP.NET Core Minimal API 프로젝트의 EasyCaching
11649 단어 minimalapiapicacheprogramming
ASP.NET Core에는 기본적으로 캐시를 관리하기 위한 자체 라이브러리가 있지만 실제 시나리오에서는 깨끗한 솔루션을 갖기 위해 일부 코드를 작성해야 합니다.
EasyCaching은 기본 사용법과 캐싱을 더 쉽게 처리하는 데 도움이 되는 일부 고급 캐싱 사용법을 포함하는 오픈 소스 캐싱 라이브러리입니다.
Minimal API 프로젝트에서 EasyCaching을 사용하는 방법을 살펴보겠습니다.
패키지 설치
EasyCaching의 기본 패키지는 EasyCaching.Core라고 하며 캐싱의 기본 논리를 포함합니다.
EasyCaching의 다른 패키지 없이 이 패키지를 사용하는 것은 그리 일반적이지 않습니다.
그 이유는 매우 간단합니다. EasyCaching이 모든 데이터를 저장하는 공급자가 필요합니다.
EasyCaching 팀에서 직접 개발한 많은 캐싱 공급자가 있습니다.
그리고 훨씬 더.
캐싱 공급자를 선택하고 NuGet을 통해 설치합니다.
Install-Package EasyCaching.InMemory
Install-Package EasyCaching.Redis
Install-Package EasyCaching.SQLite
모든 종속성은 캐싱 공급자 패키지와 함께 설치됩니다.
프로젝트 구성
이제 ASP.NET Core Minimal API 프로젝트에 EasyCaching을 추가할 준비가 되었습니다.
"Program.cs"파일을 열고 클래스 시작 부분의 IServiceCollection에 서비스를 추가합니다.
builder.Services.AddEasyCaching(options =>
{
options.UseInMemory("inMemoryCache");
});
이는 In Memory 캐시를 사용하는 가장 간단한 방법이며 기본 구성을 사용합니다.
이 단계에서 많은 매개변수를 설정할 수도 있습니다.
builder.Services.AddEasyCaching(options =>
{
// use memory cache with your own configuration
options.UseInMemory(config =>
{
config.DBConfig = new InMemoryCachingOptions
{
// scan time, default value is 60s
ExpirationScanFrequency = 60,
// total count of cache items, default value is 10000
SizeLimit = 100,
// below two settings are added in v0.8.0
// enable deep clone when reading object from cache or not, default value is true.
EnableReadDeepClone = true,
// enable deep clone when writing object to cache or not, default valuee is false.
EnableWriteDeepClone = false,
};
// the max random second will be added to cache's expiration, default value is 120
config.MaxRdSecond = 120;
// whether enable logging, default is false
config.EnableLogging = false;
// mutex key's alive time(ms), default is 5000
config.LockMs = 5000;
// when mutex key alive, it will sleep some time, default is 300
config.SleepMs = 300;
}, "inMemoryCache");
});
메모리 제공자에 대한 모든 매개변수를 더 잘 이해하려면 공식 문서를 읽을 수 있습니다. https://easycaching.readthedocs.io/en/latest/In-Memory/
EasyCaching을 사용하도록 코드 변경
기본 WeatherForecast Get 끝점을 사용하여 EasyCaching을 사용하는 것이 얼마나 쉬운지 이해할 수 있습니다.
우선, 종속성 주입 엔진을 사용하여 공급자의 인스턴스를 검색할 수 있습니다(예, 시작 시 둘 이상을 구성할 수 있습니다).
그런 다음 EasyCaching 공급자에 값이 저장되어 있는지 확인할 수 있으며 이 경우 엔드포인트에서 캐시된 값을 직접 반환할 수 있습니다.
다른 경우에는 날씨 값을 로드하고 API에 대한 다음 호출을 위해 캐시에 저장합니다.
코드를 직접 보면 더 쉽습니다.
app.MapGet("/weatherforecast", async (IEasyCachingProvider _provider) =>
{
if (await _provider.ExistsAsync("forecast"))
{
var cachedForecast = await _provider.GetAsync<WeatherForecast[]>("forecast");
return cachedForecast.Value;
}
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateTime.Now.AddDays(index),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
await _provider.SetAsync("forecast", forecast, TimeSpan.FromMinutes(60));
return forecast;
})
.WithName("GetWeatherForecast");
프로 팁
매우 쉬운 방법으로 모든 설정을 appsettings.json 파일에 직접 저장할 수 있습니다.
아래 코드와 같이 공급자 설정을 변경할 수 있습니다.
options.UseInMemory(Configuration, "default", "easycaching:inmemory");
그런 다음 이 json 섹션을 appsettings.json 파일에 추가할 수 있습니다.
"easycaching": {
"inmemory": {
"MaxRdSecond": 120,
"EnableLogging": false,
"LockMs": 5000,
"SleepMs": 300,
"DBConfig":{
"SizeLimit": 10000,
"ExpirationScanFrequency": 60,
"EnableReadDeepClone": true,
"EnableWriteDeepClone": false
}
}
}
In Memory 공급자뿐만 아니라 다른 공급자에 대해서도 동일한 접근 방식을 사용할 수 있습니다.
여기에서 Redis의 예를 찾을 수 있습니다. https://easycaching.readthedocs.io/en/latest/Redis/
Reference
이 문제에 관하여(ASP.NET Core Minimal API 프로젝트의 EasyCaching), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kasuken/easycaching-in-a-aspnet-core-minimal-api-project-263f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)