Nhiều bạn thấy tác dụng của cache hay quá, nhanh quá, thế là nảy ra suy nghĩ: “Cứ muốn tăng hiệu năng là sẽ lưu dữ liệu vào cache”
❌ Đây là một suy nghĩ sai lầm.
Dưới đây là một số lưu ý khi sử dụng Cache:
🔶 1. Sử dụng cache khi: dữ liệu của một hoặc nhiều bảng kết hợp với nhau ĐƯỢC LẤY RA THƯỜNG XUYÊN, nhưng ÍT BỊ SỬA ĐỔI.
🔶 2. Để tăng tốc độ truy xuất dữ liệu, cache thường lưu dữ liệu trong bộ nhớ chính (RAM). Nhược điểm của việc lưu dữ liệu trong RAM, chắc mọi người cũng đều biết rồi, đó là dữ liệu sẽ bị mất đi khi máy tính bị tắt hoặc khởi động lại (server bị down hoặc restart). Đó là lý do mà những dữ liệu quan trọng, cần lưu trữ lâu dài thì mọi người sẽ lưu vào trong Database.
🔶 3. Thiết lập expiration policy: Khi dữ liệu được lưu trong cache bị hết hạn, nó sẽ được loại bỏ khỏi cache. Khi không thiết lập expiration policy, dữ liệu trong cache sẽ được lưu trữ vĩnh viễn trong bộ nhớ.
🔶 4. Không nên thiết lập expiration date QUÁ NGẮN. Vì nếu làm vậy sẽ khiến hệ thống phải truy vấn Database thường xuyên để lưu ngược dữ liệu vào cache. Như vậy thì sử dụng cache cũng chẳng có ý nghĩa gì nữa.
🔶 5. Không nên thiết lập expiration date QUÁ DÀI nếu dữ liệu đó có sự thay đổi định kỳ. Vì như vậy dữ liệu có thể sẽ bị quá cũ, mà không được cập nhật.
🔶 6. Đồng bộ dữ liệu giữa Database và cache: Các thao tác sửa đổi dữ liệu chung trong Database và cache cần được xử lý trong cùng một transaction để đảm bảo tính nhất quán của dữ liệu.
🔶 7. Nên sử dụng nhiều cache server trên các data center khác nhau. Vì nếu chỉ dùng 1 cache server thì sẽ có thể gặp phải trường hợp cache server đó bị down, gây ảnh hưởng đến cả hệ thống.
🔶 8. Thiết lập eviction policy: Khi cache bị đầy, bất kỳ request nào muốn add item vào cache có thể khiến các item hiện có trong cache bị xóa bớt đi.
Một trong những eviction policy phổ biến nhất là Least Recently Used (viết tắt là LRU). Tức là item nào trong cache ÍT ĐƯỢC SỬ DỤNG GẦN ĐÂY NHẤT thì khi cần sẽ bị xóa trước tiên.
Ngoài ra còn một số eviction policy khác như:
– Least Frequently Used (LFU): Loại bỏ item ít được sử dụng nhất.
– First In First Out (FIFO): Vào trước Ra trước. Giống như nguyên lý của Hàng đợi (Queue)
Từ đó các bạn có thể cân nhắc để áp dụng eviction policy tương ứng vào các trường hợp cụ thể khác nhau của dự án.
Lời nhắn
Bạn có thể tham khảo thêm những bài viết trong series “System Design” của mình trên blog này nhé. Hi vọng kiến thức này hữu ích với bạn.
Follow mình trên Facebook “CLB Lập trình – THPT Ngọc Tảo” hoặc kênh Youtube “Tờ Mờ Sáng học Lập trình” để cùng nhau học tập, chia sẻ những kiến thức công nghệ và lập trình hoàn toàn miễn phí nhé!
Facebook CLB Lập trình – THPT Ngọc Tảo: https://www.facebook.com/clb.it.ngoctao/
Youtube Tờ Mờ Sáng học Lập trình: https://www.youtube.com/@tmsanghoclaptrinh
Hẹn gặp lại 👋
Bạn có thể đọc thêm
Clean Architecture: A Craftsman’s Guide to Software Structure and Design – Robert C. Martin
Designing Data – Insensitive applications – Martin Kleppmann
System Analysis and Design – Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
System Design Interview – Alex Xu
Modern Systems Analysis and Design – Joseph Valacich, Joey George
Head First Design Patterns – Eric Freeman, Elisabeth Robson
1 Response
[…] vì có những dữ liệu đã được lưu vào cache (Các bạn có thể đọc lại bài “MỘT SỐ LƯU Ý KHI SỬ DỤNG CACHE” để cân nhắc về việc nên và không nên lưu gì vào cache […]