DEV Community

Việt Anh Trần Hữu
Việt Anh Trần Hữu

Posted on

Các Phương Pháp Caching (P1)

Xin chào mọi người lại là Slao đây !

Lần trước mình đã nói qua cho mọi người hiểu qua về Caching, sau đây bài viết sẽ giới thiệu về các phương pháp dành cho Caching

Hello mọi người, Slao Đây!

Bài viết này sẽ giúp bạn hiểu rõ hơn về các phương pháp Cache hay gọi cách khác là chiến lược Cache (Cache Strategies)

Cache Strategies được chia thành 2 loại chính

  1. Đọc dữ liệu : bao gồm Cache aside và Read through.

  2. Viết dữ liệu:  bao gồm Write around, Write back và Write through.

Vì có rất nhiều kiến thức nên bài viết này sẽ chỉ nói về phần đọc dữ liệu của Cache nhé

Cache Aside

Cache Aside là gì và cách hoạt động

 "Cache aside", còn được biết đến với tên gọi "Lazy loading" hay "Load-through cache". Mô hình này đặc biệt hữu ích trong các trường hợp mà việc cập nhật dữ liệu không quá thường xuyên, nhưng yêu cầu truy cập dữ liệu nhanh chóng.

Image description

Như trong ảnh đã miêu tả về quá trình cache của Cache Aside gồm các bước theo thứ tự

  • Bước 1: Kiểm tra cache

Nếu dữ liệu có trong cache, dữ liệu sẽ được trả về từ cache, giúp giảm thiểu độ trễ và tải trên hệ thống lưu trữ chính hoặc cơ sở dữ liệu. Ngược lại, nếu dữ liệu không có trong cache, hệ thống sẽ thông báo tới ứng dụng để tiếp tục với bước tiếp theo.

  • Bước 2: Truy cập dữ liệu từ nguồn chính

Nếu dữ liệu yêu cầu không có trong cache, hệ thống sẽ truy cập dữ liệu từ nguồn dữ liệu chính, thường là một cơ sở dữ liệu hoặc một dịch vụ dữ liệu bên ngoài.

  • Bước 3: Cập nhật Cache

Sau khi dữ liệu được truy cập từ nguồn chính, hệ thống sẽ lưu trữ (cache) dữ liệu đó cho các yêu cầu trong tương lai và trả về dữ liệu cho người dùng hoặc ứng dụng yêu cầu. Việc này đảm bảo rằng dữ liệu sẽ được nhanh chóng truy cập trong lần yêu cầu tiếp theo mà không cần phải truy cập lại nguồn dữ liệu chính.

  • Bước 4: Xử lý dữ liệu lỗi thời

Dữ liệu trong cache cần được cập nhật hoặc loại bỏ khi nó không còn đồng bộ với dữ liệu trong nguồn chính (bị lỗi thời). Điều này thường được quản lý thông qua cơ chế hết hạn (TTL - Time to Live) hoặc bằng cách chủ động loại bỏ cache khi dữ liệu nguồn được cập nhật.

Ưu điểm

  1. Tiết kiệm tài nguyên: Cache-aside chỉ lưu trữ dữ liệu vào cache khi cần thiết, giảm thiểu việc sử dụng tài nguyên bộ nhớ cho dữ liệu không được truy cập thường xuyên.
  2. Tính linh hoạt: Chiến lược này cho phép tự do quản lý việc đưa dữ liệu vào và lấy dữ liệu ra khỏi cache, giúp tối ưu hóa hiệu suất và sử dụng tài nguyên.
  3. Dễ triển khai: Cache-aside là một phương pháp đơn giản và dễ triển khai, không đòi hỏi nhiều công sức để tích hợp vào các hệ thống phần mềm.

Nhược điểm

  1. Hiện tượng đọc không đồng nhất: Cần phải tự quản lý việc đồng bộ hóa dữ liệu giữa cache và nguồn dữ liệu chính. Có thể xảy ra khi dữ liệu trong cache bị cũ hoặc không được đồng bộ với nguồn gốc, dẫn đến sự không nhất quán giữa các phiên bản của dữ liệu.
  2. Rủi ro về độ trễ: Khi dữ liệu không có sẵn trong cache, việc truy vấn từ nguồn gốc có thể tạo ra độ trễ đáng kể, ảnh hưởng đến thời gian phản hồi của hệ thống.

Trường hợp sử dụng: Web caching cho các trang web hoặc dịch vụ API có lượng truy cập cao nhưng dữ liệu không thay đổi thường xuyên.

Read through

Read through là gì và cách hoạt động

 Khác với chiến lược "Cache Aside", nơi ứng dụng phải chủ động kiểm tra cache, sau đó tải dữ liệu vào cache nếu nó không tồn tại, chiến lược Read through sử dụng một lớp trung gian (thường là một cache proxy hoặc cache library) để tự động xử lý việc tải dữ liệu vào cache.

Image description

Như trong ảnh đã miêu tả về quá trình cache của Read Through gồm các bước theo thứ tự

  • Bước 1: Yêu cầu dữ liệu

Khi một ứng dụng cần truy cập dữ liệu, nó sẽ yêu cầu dữ liệu thông qua lớp cache thay vì trực tiếp từ nguồn dữ liệu chính (ví dụ: cơ sở dữ liệu).

  • Bước 2: Kiểm tra cache

Nếu dữ liệu có sẵn trong cache, cache sẽ trả về dữ liệu ngay lập tức cho ứng dụng, giảm thiểu độ trễ và tải trên nguồn dữ liệu chính. Ngược lại, nếu dữ liệu không có trong cache,  Quá trình tiếp theo sẽ được kích hoạt.

  • Bước 3: Tải dữ liệu từ nguồn chính

Nếu dữ liệu yêu cầu không tồn tại trong cache, lớp trung gian sẽ tự động truy cập nguồn dữ liệu chính để lấy dữ liệu.

  • Bước 4: Cập nhật cache

Sau khi dữ liệu được lấy từ nguồn chính, nó sẽ được tự động lưu vào cache. Điều này đảm bảo rằng trong lần truy cập tiếp theo, dữ liệu có thể được trả về ngay lập tức từ cache mà không cần truy cập lại nguồn chính.

  • Bước 5: Trả về dữ liệu

Dữ liệu sau khi đã được lưu vào cache sẽ được trả về cho ứng dụng, giống như nó được trả về từ cache trong trường hợp dữ liệu đã sẵn có.

Ưu điểm

  1. Tự động cập nhật cache: Hệ thống tự động đọc dữ liệu từ nguồn gốc và cập nhật vào cache mỗi khi cần thiết, giúp đảm bảo tính nhất quán của dữ liệu trong cache.
  2. Giảm thiểu lỗi thời của dữ liệu: Bằng cách tự động cập nhật cache, chiến lược này giúp giảm thiểu tình trạng dữ liệu lỗi thời trong cache.
  3. Giảm công sức quản lý: Không cần phải quản lý việc cập nhật cache một cách thủ công.

Nhược điểm

  1. Cần có lớp trung gian: Cần có lớp trung gian hoặc thư viện hỗ trợ, có thể làm tăng độ phức tạp của hệ thống.

Trường hợp sử dụng: Ứng dụng cần tự động hóa việc tải dữ liệu vào cache, đảm bảo dữ liệu luôn sẵn có trong cache khi cần.

Tổng kết

Qua đây mình mong mọi người hiểu hơn về 2 phương pháp, chiến lược đọc dữ liệu của cache và mình sẽ ra thêm về phần viết dữ liệu nữa, mọi người cùng đón chờ nhớ

Top comments (0)