NEWS

[C#] Memory Cache là gì, và sử dụng trong ứng dụng Winform

[C#] Memory Cache là gì, và sử dụng trong ứng dụng Winform
Đăng bởi: Thảo Meo - Lượt xem: 3237 15:24:16, 28/03/2023DEVEXPRESS   In bài viết

Xin chào các bạn bài viết hôm nay mình hướng dẫn các bạn sử dụng Memory Cache trên ứng dụng C#, Winform.

[C#] How to use Memory Cache in Winform

memory_cache

Khi các bạn làm hệ thống lớn, để cho người dùng có trải nghiệm tốt hơn thì người ta thường sử dụng Cache.

Cache chúng ta thường hay sử dụng 2 loại:

  1. Cache File (lưu trữ nội dung ra file)
  2. Sử dụng Memory Cache

Sử dụng Memory cache thì tốc độ sẻ nhanh rất nhiều lần so với chúng ta cache ra file.

Memory Cache trong C# là một công cụ được cung cấp bởi .NET Framework cho phép lưu trữ dữ liệu tạm thời trong bộ nhớ RAM của hệ thống.

Nó được sử dụng để lưu trữ dữ liệu tạm thời trong ứng dụng, giúp giảm bớt số lần truy cập dữ liệu từ cơ sở dữ liệu hoặc ổ đĩa, giúp tăng tốc độ truy cập dữ liệu và giảm tải cho máy chủ.

Memory Cache là một cơ chế lưu trữ dữ liệu khả dụng trong .NET Framework, có thể được sử dụng trong nhiều loại ứng dụng, bao gồm các ứng dụng WinForms, WPF, ASP.NET, Windows Services, Console Applications,...

Việc sử dụng Memory Cache là một trong những cách để tối ưu hiệu suất ứng dụng, giúp giảm thời gian truy vấn dữ liệu, tăng tốc độ xử lý và cải thiện trải nghiệm người dùng.

Trên winform, các bạn import thư viện System.Runtime.Caching như hình bên dưới:

RCache1

Dưới đây là một ví dụ về cách sử dụng Memory Cache trong C#:

using System;
using System.Runtime.Caching;

class Program
{
    static void Main(string[] args)
    {
        // Khởi tạo đối tượng MemoryCache
        MemoryCache cache = MemoryCache.Default;

        // Lưu trữ dữ liệu vào MemoryCache
        string key = "myData";
        string data = "LAPTRINHVB.NET";
        cache.Add(key, data, DateTimeOffset.Now.AddMinutes(10));

        // Truy cập dữ liệu từ MemoryCache
        string cachedData = (string)cache[key];
        Console.WriteLine(cachedData);

        // Kiểm tra xem dữ liệu có tồn tại trong MemoryCache không
        if (cache.Contains(key))
        {
            Console.WriteLine("Data exists in cache");
        }
        else
        {
            Console.WriteLine("Data does not exist in cache");
        }

        // Xóa dữ liệu khỏi MemoryCache
        cache.Remove(key);
    }
}

Trong ví dụ trên, chúng ta khởi tạo đối tượng MemoryCache bằng cách sử dụng thuộc tính tĩnh MemoryCache.Default.

Sau đó, chúng ta lưu trữ dữ liệu "LAPTRINHVB.NET" vào MemoryCache với khóa "myData" và thời gian sống là 10 phút.

Sau đó, chúng ta truy cập dữ liệu từ MemoryCache bằng cách sử dụng khóa "myData" và in ra màn hình. Tiếp theo, chúng ta kiểm tra xem dữ liệu có tồn tại trong MemoryCache hay không.

Cuối cùng, chúng ta xóa dữ liệu khỏi MemoryCache bằng cách sử dụng phương thức Remove.

Lưu ý rằng trong ví dụ này, chúng ta sử dụng thời gian sống để cấu hình thời gian lưu trữ của dữ liệu trong MemoryCache. Nếu thời gian sống của dữ liệu hết hạn, dữ liệu sẽ bị xóa khỏi MemoryCache.

Việc sử dụng MemoryCache trong C# WinForms có ưu điểm và nhược điểm như sau:

Ưu điểm:

  • Tăng tốc độ truy cập dữ liệu: MemoryCache được lưu trữ trong bộ nhớ RAM, do đó truy cập dữ liệu từ MemoryCache nhanh hơn so với truy cập dữ liệu từ cơ sở dữ liệu hoặc tệp vật lý trên đĩa cứng.
  • Giảm lưu lượng truy vấn cơ sở dữ liệu: Khi sử dụng MemoryCache, chúng ta có thể lưu trữ dữ liệu được truy vấn từ cơ sở dữ liệu lên MemoryCache.
  • Khi có yêu cầu truy vấn tương tự, chúng ta có thể sử dụng dữ liệu từ MemoryCache thay vì truy vấn lại cơ sở dữ liệu, từ đó giảm lượng truy vấn cơ sở dữ liệu.
  • Có thể kiểm soát thời gian sống của dữ liệu: Chúng ta có thể cấu hình thời gian sống của dữ liệu trong MemoryCache, giúp giảm bớt tình trạng bộ nhớ tràn do lưu trữ dữ liệu quá lớn.

Nhược điểm:

  • Không phù hợp với dữ liệu lớn: Nếu lưu trữ dữ liệu quá lớn trong MemoryCache, sẽ dẫn đến việc sử dụng nhiều bộ nhớ hơn, gây giảm hiệu năng của ứng dụng.
  • Không phù hợp với các ứng dụng đòi hỏi tính chính xác cao: Trong trường hợp các ứng dụng yêu cầu dữ liệu chính xác, việc sử dụng MemoryCache có thể dẫn đến việc lấy dữ liệu không đúng, do MemoryCache lưu trữ dữ liệu từ phiên trước đó.
  • Không giải quyết được vấn đề đồng bộ hóa dữ liệu: Nếu có nhiều luồng truy cập đến cùng một MemoryCache, có thể dẫn đến xung đột dữ liệu. Trong trường hợp này, chúng ta cần sử dụng các cơ chế đồng bộ hóa dữ liệu để giải quyết vấn đề.

 

Các bạn có thể tham khảo và download link bài viết bên dưới có sử dụng Memory Cache để cache dữ liệu khi truy vấn API:

https://laptrinhvb.net/bai-viet/devexpress/--DEVEXPRESS---Huong-dan-show-Form-chon-du-lieu-tu-Form2-tra-ve-Form1-tren--Csharp-/1992c7495ff66491.html

 

Thanks for watching!

 

 

 

 

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Memory Cache là gì, và sử dụng trong ứng dụng Winform
Đăng bởi: Thảo Meo - Lượt xem: 3237 15:24:16, 28/03/2023DEVEXPRESS   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.