Giới thiệu
Trong thế giới số nhanh chóng hiện nay, ứng dụng cần hiệu suất cao và phản hồi nhanh. Một cách đạt được điều này là triển khai cơ chế caching lưu trữ dữ liệu truy cập thường xuyên, giảm việc lấy dữ liệu từ database lặp lại. Redis, một in-memory data store phổ biến, cung cấp giải pháp caching mạnh mẽ cho ứng dụng .NET Core. Bài viết khám phá cách tích hợp Redis cache trong .NET Core 6 với ví dụ thực tế.
Điều kiện tiên quyết
- .NET Core 6 SDK: Cài đặt .NET Core 6 SDK hoặc mới hơn từ trang web chính thức .NET.
- Redis Server: Cài đặt và chạy Redis server local hoặc dùng dịch vụ Redis cloud.
Cài đặt Redis Server trên Windows
Tải Redis
Tải phiên bản Redis precompiled cho Windows 64-bit từ GitHub: https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.msi
Click link tải file .msi (Windows installer). Tìm file trong thư mục Downloads.
Click file để cài đặt Redis.
Redis Server cài đặt tại C:\Program Files\Redis. Có file redis-server.exe.

Mở command line, chạy:
redis-server

Redis server đã chạy.
Giám sát cập nhật/thay đổi trên Redis server:
redis-cli monitor

Tạo ứng dụng .NET Core 6 Console
dotnet new console -n RedisCacheDemo
cd RedisCacheDemo
dotnet add package StackExchange.Redis
Cấu hình kết nối Redis
Trong file Program.cs, thêm using và cấu hình kết nối trong method Main:
static void Main(string[] args) {
var configuration = ConfigurationOptions.Parse("localhost:6379");
var redisConnection = ConnectionMultiplexer.Connect(configuration);
var redisCache = redisConnection.GetDatabase();
Console.WriteLine("Fetching data with caching:");
var cachedData = GetDataWithCaching(redisCache);
Console.WriteLine($"Result: {cachedData}");
Console.WriteLine("Fetching data without caching:");
var uncachedData = GetDataFromDatabase();
Console.WriteLine($"Result: {uncachedData}");
redisConnection.Close(); // Quan trọng: đóng kết nối
}
static string GetDataFromDatabase() {
// Mô phỏng lấy dữ liệu từ database
Thread.Sleep(2000); // Giả lập độ trễ
return "Start";
}
static string GetDataWithCaching(IDatabase redisCache) {
// redisCache.KeyDelete("cachedData"); // Để xóa cache
// redisCache.StringSet("cachedData", "Test", TimeSpan.FromMinutes(1)); // Để cập nhật cache
string cachedData = redisCache.StringGet("cachedData");
if (string.IsNullOrEmpty(cachedData)) {
cachedData = GetDataFromDatabase();
redisCache.StringSet("cachedData", cachedData, TimeSpan.FromMinutes(1));
}
return cachedData;
}
Chạy chương trình. Lần đầu kết quả với và không cache giống nhau vì output được lưu vào cache lần đầu. Nếu thay đổi code, kết quả sẽ khác.
static string GetDataFromDatabase() {
Thread.Sleep(2000);
return "Last"; // Thay đổi giá trị trả về
}
Chạy lại: giá trị đầu tiên lấy từ cache, giá trị thứ hai lấy không dùng cache.
Kết luận
Chúc mừng! Bạn đã tích hợp thành công Redis cache vào ứng dụng .NET Core 6. Bằng cách triển khai caching, bạn đã cải thiện hiệu suất và khả năng phản hồi của ứng dụng, làm cho nó hiệu quả hơn trong xử lý dữ liệu truy cập thường xuyên.