Entity Framework (EF) Core Cache

EF(Entity Framework) Core는 .NET Core 응용 프로그램. 매우 가볍고 확장 가능하며 크로스 플랫폼입니다.

그러나 높은 거래 .NET Core 응용 프로그램 EF 코어 페이스 퍼포먼스 최대 부하에서 데이터베이스 계층의 확장성 병목 현상이 발생합니다. 애플리케이션 서버를 추가하여 애플리케이션 계층을 선형으로 확장할 수 있지만 확장하기 위해 데이터베이스 서버를 더 추가할 수는 없기 때문입니다.

그러나 다음과 같은 분산 캐시를 사용하는 경우 NCache 귀하의 .NET Core 이러한 응용 프로그램을 빠르게 제거할 수 있습니다. 성능 및 확장성 병목 현상 극단적인 트랜잭션 로드를 처리합니다.

확장 방법을 통한 EF 코어 캐싱

확장 메서드는 파생 클래스를 만들지 않고도 기존 클래스와 형식을 확장할 수 있는 C#의 기능입니다. 확장 메서드는 특수한 종류의 정적 메서드이지만 확장 클래스의 인스턴스 메서드인 것처럼 호출됩니다.

NCache 확장 방법을 통해 EF Core에 캐싱 기능을 통합했습니다. 이것은 사용 NCache 안에서 EF 핵심 애플리케이션 매우 간단하고 간단합니다. 다음은 에서 제공하는 EF Core 확장 방법 목록입니다. NCache.

1. 트랜잭션 데이터 캐싱: FromCache() / FromCacheAsync()

EF Core에서 캐시하는 가장 일반적인 데이터는 트랜잭션 데이터입니다. 이것은 런타임에 생성되는 자주 변경되는 데이터(예: 고객, 계정, 활동 등)이며 애플리케이션이 여러 번 읽는 동안 짧은 시간 동안만 캐시합니다.

FromCache() 확장 메서드를 사용하면 결과 집합을 캐싱하여 트랜잭션 데이터를 캐싱할 수 있습니다. LINQ 쿼리. 아래 예제를 참조하십시오.

//Load suppliers into the cache with the expiration options 
IEnumerable<Suppliers> suppliers = (from supplier in database.Suppliers
				      where supplier.SupplierId < 10
				      select supplier).FromCache(options);

여기에서 이 데이터를 가져오기 위해 데이터베이스로 이동하기 전에 FromCache() 메서드가 이 데이터의 캐시를 확인합니다. 찾으면 캐시에서 반환합니다. 그렇지 않으면 데이터베이스에서 가져오고 다음에 캐시할 수 있도록 먼저 캐시한 다음 호출자에게 결과를 반환합니다.

전체 컬렉션을 캐시의 한 항목으로 캐싱하거나 모든 엔터티를 분리하여 별도로 캐시할 수 있는 옵션이 있습니다. 이러한 항목을 개별적으로 가져오거나 업데이트하려는 경우에도 분리가 유용합니다. 아래는 이 메서드의 비동기 버전입니다.

//Load suppliers into the cache with the expiration options asynchronously
Task<IEnumerable><Suppliers> suppliersTask = (from supplier in database.Suppliers
                                                where supplier.SupplierId < 10
                                                select supplier).FromCacheAsync(options);
suppliersTask.Wait();
IEnumerable<Suppliers> suppliers = suppliersTask.Result.ToList();

2. 참조 데이터 캐싱: LoadIntoCache() / LoadIntoCacheAsync()

참조 데이터는 완전히 캐시해야 하는 것입니다. 이것은 당신이 실행할 수 있습니다 LINQ 쿼리 캐시에만 있고 데이터베이스로 이동하지 마십시오. 캐시에 전체 데이터 세트가 없는 경우 LINQ 쿼리 결과는 캐시만 확인하고 전체 데이터 세트가 캐시에 있다고 가정하기 때문에 올바르지 않습니다.

LoadIntoCache() 확장 메서드를 사용하면 모든 참조 데이터로 EF Core 캐시를 채울 수 있습니다. 캐시를 채우는 방법은 아래 예를 참조하세요.

//Load ALL products into the cache as reference data
IEnumerable<Products> products = (from product in database.Products
                                    select product)
                                    .LoadIntoCache(out string cacheKey, options);

3. 참조 데이터 검색: FromCacheOnly() / FromCacheOnlyAsync()

모든 참조 데이터가 있는 캐시를 로드한 후에는 데이터베이스 대신 LINQ 쿼리를 실행할 수 있습니다. 이렇게 하면 데이터베이스에 대한 부담이 줄어들고 애플리케이션 성능과 확장성이 향상됩니다. 아래 예를 참조하십시오.

//Query for discontinued products from the reference data cache
IEnumerable<Products> products = (from product in database.Products
                                    where product.Discontinued == true
                                    select product).FromCacheOnly();

EF Core 참조 데이터 캐시에는 전체 데이터 세트(예: 이 경우 제품)가 포함되어야 합니다. 그렇지 않으면 FromCacheOnly() 확장 메서드는 데이터베이스를 확인하지 않으므로 캐시에 있는 것만 반환합니다. 그리고 이것은 정확하지 않을 수 있습니다.

4. 캐시 업데이트: EF Core용 캐시 클래스

EF Core에서 엔터티를 변경할 때마다 "캐시" 핸들을 얻고 적절한 업데이트 메서드를 호출하여 EF Core 캐시를 업데이트할 수 있습니다. 아래는 예시입니다.

// Initialize the database context
NorthwindContext database = new NorthwindContext();
    ...
// Add some new entities to the database
database.Shippers.Add(shipperPandaExpress);
database.Shippers.Add(shipperTitanic);
database.SaveChanges();
  
Cache cache = database.GetCache();
cache.Insert(shipperPandaExpress, out cacheKey, options);
cache.Insert(shipperTitanic, out cacheKey, options);
  
//By obtain a Cache class handle, you can directly add, update, or remove entities from EF Core. And, then updated data shows up in your LINQ queries. This gives you a lot more control over updating entities when your modifying data yourself. Below is the interface of Cache class.
    
namespace Alachisoft.NCache.EntityFrameworkCore
{
    public class Cache
    {
        public void Insert(object entity, out string cacheKey, CachingOptions options);
        public void Remove(object entity);
        public void Remove(string cacheKey);
        public void RemoveByQueryIdentifier(Tag tag);
    }
}

왜 사용 하는가? NCache EF 코어 캐시로?

Entity Framework Core는 캐싱 프레임워크(예: 최대 절전 모드 하다). 하지만, NCache 은(는) 매우 유연하고 강력하면서도 매우 간단한 캐싱 프레임워크를 개발했습니다. 다음과 같은 이유로 사용해야 합니다.

  • 다중 서버 환경에서 사용: NCache 다중 서버 환경에서 매우 잘 작동하는 분산 캐시입니다. 만약 당신의 .NET Core 응용 프로그램이 트랜잭션이 많으면 다중 서버 환경에서 실행될 가능성이 있습니다. NCache 당신을 위해 일할 것입니다.
  • 매우 빠름: NCache 매우 빠른 인메모리 분산 캐시이며 밀리초 미만의 응답 시간을 제공합니다.
  • 선형 확장성: NCache 확장성 병목 현상이 발생하지 않습니다. 이를 통해 캐시 클러스터에 서버를 추가하여 선형 확장성을 달성하고 극단적인 트랜잭션 로드를 처리할 수 있습니다.
  • 캐시 크기가 무한대로 증가합니다. NCache 캐시 파티셔닝을 제공하고 모든 캐시 서버의 메모리를 풀링합니다. 그래서, 당신은 할 수 있습니다 캐시 스토리지 증가 캐시 클러스터에 더 많은 서버를 추가하기만 하면 됩니다.
  • 지능형 데이터 복제: NCache 지능적으로 복제 성능 저하 없이 캐시에 저장됩니다. 따라서 캐시 서버가 다운되더라도 캐시 데이터는 손실되지 않습니다.
  • NCache 100% 가동 시간 제공: NCache 있다 자가 치유 동적 캐시 클러스터 단일 실패 지점이 없습니다. 결과적으로, NCache 애플리케이션이나 캐시를 중지하지 않고 런타임에 캐시 서버를 추가하거나 제거할 수 있습니다.

모든 세부 사항을 참조하십시오 NCache 기능 판 비교 페이지. 에 대해 자세히 알아보기 NCache 전체 작동 30일 평가판을 다운로드하십시오. NCache 아래 링크에서.

다음에 무엇을할지?

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