Sử dụng bộ nhớ cache trong ASP.NET Core


Đỗ Bạch Loan
2 năm trước
Hữu ích 8 Chia sẻ Viết bình luận 0
Đã xem 3942

 Configure()  ASP.NET Core có một hệ thống bộ nhớ đệm dựa trên bộ nhớ tương tự như những gì chúng ta đã có trong các phiên bản ASP.NET trước đây. Bài đăng trên blog này cho thấy cách sử dụng bộ nhớ cache một mình và với sự hỗ trợ cho bộ đệm phân tán trong các ứng dụng web ASP.NET Core.

Sử dụng bộ nhớ cache

Sử dụng bộ nhớ cache bắt đầu bằng việc thêm hỗ trợ bộ đệm vào các dịch vụ khi ứng dụng khởi động.

public void ConfigureServices(IServiceCollection services)
{                        
    services.AddLogging();
    services.AddMemoryCache();       
    services.AddMvc();
}

Vì bộ nhớ đệm không liên quan gì đến đường dẫn yêu cầu, chúng tôi không phải cập nhật  Configure() phương thức của lớp khởi động.

Trong các thành phần MVC, chúng ta có thể sử dụng hàm tiêm xây dựng để lấy phiên bản nhà cung cấp của bộ đệm.

private readonly IMemoryCache _cache;

public HomeController(IMemoryCache cache)
{
    _cache = cache;
}

Và đây là cách sử dụng bộ nhớ cache trong bộ điều khiển:

public class HomeController : Controller
{
    private readonly IMemoryCache _cache;public HomeController(IMemoryCache cache)
    {
        _cache = cache;
    }
    public IActionResult Index()
    {
        _cache.Set("TestKey", "MyValue");           
        var value = _cache.Get<string>("TestKey");

        return View();
    }
}

Nhưng có khả năng chỉ sử dụng bộ nhớ cache không lý tưởng cho tình huống của chúng ta. 

Bộ nhớ cache phân tán

Để phù hợp với các nhà cung cấp bộ nhớ cache phân tán khác theo giao diện IDistributionCache, cũng có một triển khai bộ nhớ cache theo cùng giao diện. Lớp MemoryDistributionCache được bao bọc xung quanh IMemoryCache và chúng ta có thể sử dụng nó giống như cách chúng ta sẽ sử dụng bất kỳ bộ đệm phân tán nào khác. Một ví dụ về bộ đệm phân tán là  bộ đệm dựa trên SQL Server .

Để sử dụng bộ nhớ cache phân tán, chúng ta phải thêm nó vào các dịch vụ ứng dụng trong lớp Khởi động.

public void ConfigureServices(IServiceCollection services)
{                        
    services.AddLogging();
    services.AddDistributedMemoryCache();       
    services.AddMvc();
}

Để đưa nó vào các thành phần MVC, chúng tôi sử dụng một hàm tạo với giao diện IDistributionCache. Trong bộ điều khiển và xem các thành phần, chúng tôi sẽ sử dụng nó như bất kỳ dịch vụ bộ đệm phân tán nào khác.

public class HomeController : Controller
{
    private readonly IDistributedCache _cache;public HomeController(IDistributedCache cache)
    {
        _cache = cache;
    }
    public IActionResult Index()
    {
        _cache.SetString("TestKey", "MyValue");           
        var value = _cache.GetString("TestKey");

        return View();
    }
}

Bộ nhớ cache hoặc bộ nhớ cache phân tán?

Sử dụng bộ nhớ cache là tùy chọn cho các hệ thống chạy trên một hộp. Ngoài ra, trong các môi trường phát triển, chúng tôi có thể thích bộ nhớ cache dựa trên bộ nhớ để tránh các dịch vụ bên ngoài khi xây dựng hệ thống. Tôi nghĩ rằng đi với IDistributionCache là một ý tưởng tốt hơn vì không cần phải thay đổi bộ điều khiển và các phần khác của ứng dụng khi nhà cung cấp bộ đệm phân tán được thay đổi. Trong môi trường đám mây và nhiều hộp, việc thực hiện bộ đệm phân tán là bắt buộc, vì bộ nhớ cache cục bộ trên máy chủ web không được đồng bộ hóa.

Kết thúc

Bộ nhớ cache dựa trên bộ nhớ đơn giản vẫn có sẵn trên ASP.NET Core và có hai cách để sử dụng nó. Chúng tôi có thể sử dụng với giao diện IMemoeyCache và chỉ hỗ trợ bộ nhớ cache dựa trên bộ nhớ hoặc chúng tôi có thể đi với giao diện IDistributionCache và có nhiều nhà cung cấp bộ đệm khác được hỗ trợ. Đối với đám mây và cụm, IDistributionCache được ưu tiên hơn, vì bộ nhớ cache cục bộ của máy chủ web không được đồng bộ hóa.

Hữu ích 8 Chia sẻ Viết bình luận 0
Đã xem 3942