Tìm hiểu về Redis Cache và sử dụng nó trong ASP.NET Core API 5.0
Đăng lúc: 09:19 AM - 03/01/2023 bởi Charles Chung - 1913Trong bài viết này chúng ta sẽ đi tìm hiểu những khái niệm về Cache, Redis Cache, những ưu điểm của Redis Cache. Cuối cùng sẽ là một ví dụ về việc sử dụng Redis Cache trong ASP.NET Core API
1. Cache là gì?
Cache là bộ nhớ được sử dụng để lưu trữ dữ liệu truy cập thường xuyên vào bộ lưu trữ tạm thời, nó sẽ cải thiện đáng kể hiệu suất và tránh bị tấn công cơ sở dữ liệu không cần thiết và lưu trữ dữ liệu được sử dụng thường xuyên vào bộ đệm bất cứ khi nào chúng ta cần.
Như bạn thấy trong hình trên, có hai tình huống, một là không sử dụng cache và một là có sử dụng cache. Trong trường hợp chúng ta không sử dụng cache, mỗi khi người dùng muốn dữ liệu thì server sẽ điều hướng truy cập cơ sở dữ liệu và nó sẽ làm tăng độ phức tạp về thời gian và giảm hiệu suất trong trường hợp có một số dữ liệu tĩnh mà người dùng muốn và điều đó cũng tương tự đối với tất cả người sử dụng. Trong trường hợp sử dụng cache và trong trường hợp đó nếu có cùng một dữ liệu tĩnh và giống nhau cho tất cả người dùng thì chỉ người dùng đầu tiên sẽ truy cập cơ sở dữ liệu và tìm nạp dữ liệu và lưu trữ vào cache và sau đó hai người dùng khác đã sử dụng nó từ bộ đệm mà không cần nhấn vào cơ sở dữ liệu để tìm nạp dữ liệu.
2. Redis Cache là gì?
Redis Cache (Remote Dictionary Server Cache) là một mã nguồn mở dùng để tạo ra một máy chủ được sử dụng như một Cache. Việc dùng redis cache phù hợp với những hệ thống có dữ liệu được người dùng truy cập thường xuyên, nó giúp tốc độ truy xuất dữ liệu diễn ra nhanh hơn.
Dữ liệu lưu trữ trong Redis dưới dạng Key – Value với nhiều cấu trúc khác nhau như List, Sorted sets, Sets,... Nếu nói Redis như một bộ nhớ Cache, một Database hoặc Message Broker cũng không sai. Mọi thông tin, dữ liệu đều được redis ghi trên ram thay vì ổ đĩa hay ổ SSD như bình thường. Nhờ việc không cần dùng ổ đĩa hay ổ SSD nên Redis sẽ rút ngắn thời gian tìm kiếm, truy cập dữ liệu. Vì thế mà tốc độ đọc và ghi dữ liệu trên Redis rất nhanh, rất lý tưởng.
3. Ưu điểm
- Redis hỗ trợ người dùng có thể thêm mới hoặc loại bỏ dữ liệu trong thời gian ngắn.
- Redis có thể nhận và ghi dữ liệu lên Ram và có thể xuất hiện trên Disk tại một thời điểm.
- Key của Redis là một string nhưng được hỗ trợ sử dụng linh hoạt đa dạng các value như List, Sorted sets, Sets,…
- Dễ dàng di chuyển key từ cơ sở dữ liệu này sang cơ sở dữ liệu khác.
- Redis được trang bị nhiều lệnh đặc biệt. Vì thế mà Redis rất nhanh trong quá trình lấy và ghi dữ liệu.
- Tính năng Master – slave thích hợp cho người dùng muốn gia tăng sự an toàn cho dữ liệu, mở rộng hoặc thu hẹp không gian lưu trữ Data.
- Người dùng có thể tìm kiếm dữ liệu nhanh chóng nhất.
- Redis cho phép người dùng sử dụng linh hoạt nhiều kiểu dữ liệu khác nhau.
- Người dùng có thể để key tự động xóa đi ở một thời gian nhất định nào đó.
- Nhiều ưu điểm là thế, nhưng không phải Redis là một hệ thống lưu trữ dữ liệu hoàn hảo.
4. Các loại Cache trong .NET Core
- In-Memory Caching: Khi chúng ta sử dụng In-Memory Cache thì trong trường hợp đó, dữ liệu được lưu trữ trong bộ nhớ của máy chủ mà ứng dụng chạy trên nó, và bất cứ khi nào chúng ta cần, chúng ta sẽ tìm nạp dữ liệu từ đó và sử dụng nó ở bất cứ đâu.
- Distributed Caching: Dữ liệu được lưu trữ và chia sẻ giữa nhiều máy chủ, nó giúp dễ dàng để cải thiện khả năng mở rộng và hiệu suất của ứng dụng do trình quản lý tải giữa nhiều máy chủ của chúng tôi thuê từ bên thứ 3.Giả sử, trong tương lai, nếu một máy chủ bị sập và khởi động lại thì ứng dụng không có bất kỳ tác động nào vì có nhiều máy chủ có thể huy động để hỗ trợ.
5. Sử dụng Redis Cache trong ASP.NET Core API 5.0 (Distributed Caching)
- Cài đặt Redis Cache: Tải Redis Cache Server tại: https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504
- Khởi động Redis Server và Redis Cli lên
- Tạo ứng dụng ASP.NET Core API 5.0, chạy và kiểm tra Cache (xem video)
Video demo
Đang quay...
thay lời cảm ơn!
Các bài cũ hơn
- Tìm hiểu về AutoMapper trong ASP.NET Core 5.0 (10:34 AM - 29/12/2022)
- Tìm hiểu kiến trúc Onion trong ASP.NET Core với CQRS (01:34 PM - 22/12/2022)
- Tìm hiểu Composite Design Pattern với ví dụ sử dụng ngôn ngữ C# (09:30 AM - 20/12/2022)
- Tìm hiểu Command and Query Responsibility Segregation (CQRS) (11:37 AM - 15/12/2022)
- Hiểu biết cơ bản về lập trình hướng đối tượng (OOP) (09:50 AM - 13/12/2022)