MemoryCache trong Asp.net core

.net core cung cấp cho chúng ta một vài kiểu cache dữ liệu như in-memory caching, distributed caching & response caching. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng in-memory cache trong asp.net core như thế nào.

Khai báo trong startup class

Các bạn mở file Startup.cs và thêm đoạn code khai báo trong hàm ConfigureServices như sau

Để sử dụng các phương thức của in-memory cache, chúng ta sẽ làm việc thông qua interface IMemoryCache , nội dung interface như bên dưới (Bạn không phải viết code cài đặt vì đây là interface đã có sẵn)

Bây giờ trong mỗi controller cần dùng đến in-memory cache, các bạn inject một object của IMemoryCache thông qua hàm khởi tạo như sau

Các phương thức có sẵn của IMemoryCache

Lưu giá trị vào cache

Lấy giá trị ra khỏi cache

Hàm TryGetValue được dùng để kiểm tra xen có giá trị hay không

Hàm GetOrCreate được dùng để lấy giá trị của cache, nếu chưa có thì có thể tạo và gán cho cache

Thời gian hết hạn của cache

Nếu muốn thiết lập thời gian hết hạn cho cache, các bạn làm như sau

Hãy chú ý về cách thiết lập priority thông qua MemoryCacheEntryOptions, điều này giúp web server xác định được cache nào sẽ được xóa khỏi bộ nhớ khi quá tải về bộ nhớ. Priority có các giá trị là Low, Normal, High, and NeverRemove. Khi bộ nhớ đầy thì nó sẽ xóa cache ra khỏi bộ nhớ theo thứ tự ưu tiên, trừ trường hợp NeverRemove.

Nếu muốn set callback khi một item bị xóa khỏi cache thì sử dụng cú pháp như bên dưới