ASP.NET Core 캐시 - 개요

최신 웹 애플리케이션은 빠른 성능과 확장성을 요구합니다. 애플리케이션이 커짐에 따라 잦은 데이터베이스 쿼리는 속도를 저하시켜 성능 병목 현상과 응답 속도 저하로 이어질 수 있습니다.

ASP.NET 코어 확장 가능한 웹 애플리케이션을 구축하기 위한 강력한 프레임워크이지만 다음과 결합하면 성능이 더욱 뛰어납니다. 분산 캐싱 솔루션 처럼 NCache자주 액세스하는 데이터를 캐싱하면 데이터베이스 부하가 줄어들고, 응답 시간이 늘어나고, 확장성이 향상됩니다.

분산 캐싱의 이점, 실제 사용 사례 및 통합 방법에 대해 논의해 보겠습니다. NCache ASP.NET Core 애플리케이션에서.

 

ASP.NET Core에서 분산 캐싱이란 무엇인가요?

분산 캐싱은 자주 사용되는 데이터를 여러 서버에 저장하여 확장 가능하고 안정적인 환경을 제공합니다. 메모리 내 데이터 저장소. 이를 통해 대기 시간을 줄이고, 데이터베이스 쿼리를 최소화하고, 애플리케이션 응답성을 개선할 수 있습니다. NCache 1밀리초 미만의 응답 시간을 제공하며, 클러스터 환경에서 초당 200만 건 이상의 요청을 처리할 수 있도록 벤치마킹되었습니다.

제품 특장점 기술적 및 사업적 이점
향상된 성능 데이터를 메모리에 캐싱하여 1밀리초 미만의 응답 시간을 달성합니다. 비용이 많이 드는 데이터베이스 접근 횟수와 네트워크 지연 시간을 획기적으로 줄입니다.
선형 확장 성 런타임에 클러스터에 서버 노드를 추가하여 증가하는 트랜잭션 부하를 처리하고, 사용자 수에 관계없이 일관된 성능을 보장합니다.
고 가용성 자체 복구 기능을 갖춘 P2P 동적 클러스터를 활용하여 서버 유지 관리 또는 장애 발생 시에도 100% 가동 시간과 단일 장애 지점이 없도록 보장합니다.
데이터 신뢰성 다중 노드 복제 토폴로지를 통해 데이터 무결성을 유지하고 데이터베이스 종속성을 통해 캐시를 백엔드와 동기화합니다.
 

설정 NCache ASP.NET Core용

설치 및 구성하려면 다음 단계를 따르세요. NCache ASP.NET Core 애플리케이션용입니다.

1 단계 : 설치 NCache

설치 NCache 서버

설치 NCache 공식 웹사이트의 두 서버에 서버가 있습니다.

설치 NCache 클라이언트 SDK

ASP.NET Core 애플리케이션을 캐시 서버에 연결하려면 다음을 설치하십시오. NCache 클라이언트 SDK NuGet을 사용하여:

Install-Package Alachisoft.NCache.SDK

당신의 네트워크 및 방화벽 설정 애플리케이션과 캐시 서버 간의 통신을 허용합니다.

2단계: 클러스터형 캐시 생성

A 클러스터형 캐시 캐시된 데이터를 여러 서버에 분산시켜 확장성을 개선하고 높은 가용성을 보장합니다.

  1. 네트워크 확인 입/출력 라인 - 캐시 노드가 지정된 네트워크 포트를 통해 통신할 수 있는지 확인하세요.
  2. 구성 NCache - NCache 관리 센터 or PowerShell을 클러스터된 캐시 인스턴스를 생성합니다.
  3. 캐시 노드 추가 - 성능과 안정성을 개선하려면 여러 서버를 추가하세요.
  4. 캐시 상태 모니터링 - 동기화 및 노드 가용성 추적 NCache모니터링 도구입니다.

3단계: .NET 클라이언트 설치 및 구성

설정 후 NCacheASP.NET Core 애플리케이션이 캐시에 연결되도록 구성하십시오.

Program.cs (수정)

using Alachisoft.NCache.Client;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<ICache>(_ => CacheManager.GetCache("demoCache"));

var app = builder.Build();
app.Run();
 

사용 NCache ASP.NET Core에서

1. 캐시에서 데이터 검색

이 방법은 대량의 제품 ID를 사용하여 캐시에서 여러 제품을 검색하므로 캐시 서버에 대한 호출 수가 줄어듭니다.

public Dictionary<string, Product> RetrieveProducts(List<int> productIds)
{
    List<string> cacheKeys = productIds.Select(id => $"Product:{id}").ToList();
    Dictionary<string, Product> cachedProducts = _cache.GetBulk<Product>(cacheKeys);
    return cachedProducts;
}

2. 캐시에 데이터 추가

이 방법은 캐시에서 제품을 가져오려고 시도합니다. 제품이 없으면 데이터베이스에서 제품을 가져와 만료 시간과 함께 캐시에 추가합니다.

public Product GetProduct(int productId)
{
    string cacheKey = $"Product:{productId}";
    Product product = _cache.Get<Product>(cacheKey);

    if (product == null)
    {
        product = FetchProductFromDB(productId);
        var cacheItem = new CacheItem(product)
        {
            Expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(10))
        };
        _cache.Add(cacheKey, cacheItem);
    }
    
    return product;
}

3. 캐시에 데이터 업데이트/삽입

이 방법은 먼저 데이터베이스의 제품을 업데이트한 다음, 지정된 만료일을 갖는 캐시된 제품을 삽입하거나 업데이트합니다.

public void UpdateProduct(int productId, Product updatedProduct)
{
    // Update the database first
    UpdateProductInDB(productId, updatedProduct);
    
    // Update the cache after successful database update
    string cacheKey = $"Product:{productId}";
    var cacheItem = new CacheItem(updatedProduct)
    {
        Expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(10))
    };
    _cache.Insert(cacheKey, cacheItem);
}

4. 캐시된 데이터 제거

이 방법은 캐시 키를 사용하여 캐시에서 여러 항목을 한 번에 제거합니다.

public void RemoveData(List<string> keys)
{
    _cache.RemoveBulk(keys);
}
 

고급 기능에는 어떤 것들이 있나요? NCache?

NCache 성능을 향상시키기 위해 추가적인 엔터프라이즈 수준 캐싱 기능을 제공합니다.

  • 태그 - 효율적인 검색 및 제거를 위해 관련 캐시 항목을 구성합니다.
  • SQL 기반 쿼리 - 캐시된 데이터에 대해 구조화된 쿼리를 수행합니다.
  • 만료 & 축출 정책- 설정된 규칙에 따라 오래된 데이터를 자동으로 제거합니다.
  • 게시/구독 메시징 - 캐시 데이터가 변경되면 실시간 이벤트 알림을 받습니다.
  • 분산 세션 캐싱 - ASP.NET Core 세션을 분산 캐시에 저장하여 성능을 향상시키세요.
  • 연속 읽기 및 연속 기입 - 데이터베이스에서 캐시를 자동으로 가져와 업데이트합니다.
  • 캐시 로더 및 리프레셔 - 캐시된 데이터를 백그라운드에서 미리 로드하고 새로 고칩니다.
 

NCache 오늘!

ASP.NET Core 애플리케이션의 최적화를 위해 NCache! 데이터베이스 부하를 줄이고, 성능을 향상시키고, 손쉽게 확장하세요.

자주 묻는 질문 (FAQ)

NCache 자주 액세스하는 데이터를 분산형 인메모리 캐시에 저장하여 성능을 향상시킵니다. 이를 통해 데이터베이스 부하와 네트워크 지연 시간을 획기적으로 줄여 기존 데이터베이스 검색 방식보다 1밀리초 미만의 응답 시간을 구현할 수 있습니다.

단일 서버로 제한되는 InProc 캐싱과는 달리, NCache 웹 팜 전체에 걸쳐 데이터를 공유하는 분산 아키텍처를 제공합니다. 이를 통해 단일 장애 지점을 제거하고 애플리케이션 트래픽 증가에 따른 선형적인 확장성을 확보할 수 있습니다.

예. NCache ASP.NET용 고성능 분산 세션 상태 공급자를 제공합니다. 이를 통해 모든 서버 노드에서 세션 데이터의 가용성과 일관성을 유지하여 웹 서버가 다운되더라도 높은 가용성을 보장합니다.

NCache SQL과 유사한 검색, 이벤트 조정을 위한 Pub/Sub 메시징, 캐시가 백엔드 데이터 소스와 항상 동기화되도록 하는 데이터베이스 종속성 등 엔터프라이즈급 기능을 포함합니다.

문의하기

전화

+1 214-619-2601 (미국)

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.