Cache là gì?

Cache là một bộ nhớ tạm (nhanh) được sử dụng để lưu trữ tạm thời dữ liệu thường xuyên được truy cập, nhằm giảm độ trễ và tăng hiệu suất của hệ thống. Cache thường được sử dụng ở Client, như CPU, applications, web browsers hoặc operating systems (OSes).

Một số Cache phổ biến

  • CPU Cache: Cache phần cứng (L1, L2, L3) dùng để lưu trữ dữ liệu/ghi chú CPU truy cập gần nhất.
  • Memory Cache (RAM Cache): Lưu dữ liệu tạm thời trong bộ nhớ để truy xuất nhanh hơn so với truy xuất từ ổ đĩa.
  • Application-level Cache: Caching trong code ứng dụng (ví dụ: Spring Cache, Python functools.lru_cache, v.v.).
  • Web Cache (Browser Cache): Lưu các tài nguyên tĩnh như ảnh, JS, CSS trên trình duyệt để tránh tải lại từ server.
  • Distributed Cache: Cache dùng cho hệ thống phân tán, ví dụ: Redis, Memcached.
  • Database Cache: Cache kết quả truy vấn, thường do chính DBMS hoặc app server xử lý.

Cách hoạt động

Khi cache client cần truy cập data, việc đầu tiên là check cache. Khi request data tìm thấy dữ liệu cần thiết trong Cache, nó được gọi là Cache hit. Tỉ lệ của kết quả tìm kiếm cache hit được biết đến như là cache hit rate hay ratio.

Nếu việc tìm kiếm data không thành công, nó gọi là Cache miss – từ đây dữ liệu sẽ được kéo từ bộ nhớ chính sang bộ nhớ cache. Việc giữ dữ liệu nào cần, hay xoá khỏi bộ nhớ điệm để nhường chỗ cho dữ liệu mới sẽ tùy thuộc vào thuật toán mà system sử dụng.

Web browsers như là Internet Explorer, Firefox, Safari và Chrome, sử dụng browser cache để tăng hiệu suất các trang web thường xuyên truy cập. Khi bạn truy cập một webpage, hệ thống sẽ lưu trữ các file cần thiết vào browser cache trong máy tính. Khi bạn quay lại trang web đó, browser sẽ chỉ cần lấy các thông tin quan trọng và update các thông tin cần thiết mà thôi, và không cần tải lại toàn bộ các nội dung từ web server – điều này làm cải thiện hiệu suất web.

Cache rất quan trọng vì một số lý do như sau :

  • Việc sử dụng bộ đệm làm giảm độ trễ cho dữ liệu hoạt động. Điều này dẫn đến hiệu suất cao hơn cho một hệ thống hoặc ứng dụng.
  • Nó cũng chuyển hướng I/O sang bộ đệm, giảm hoạt động I/O sang bộ nhớ ngoài và mức lưu lượng SAN thấp hơn.
  • Dữ liệu có thể lưu lại vĩnh viễn trên bộ lưu trữ truyền thống hoặc lưu trữ bên ngoài. Điều này duy trì tính nhất quán và toàn vẹn của dữ liệu bằng các tính năng được cung cấp bởi mảng, chẳng hạn như ảnh chụp nhanh hoặc replication.

Các thuật toán điều khiển Cache

Có rất nhiều thuật toán Cache, nhưng sau đây là các thuật toán cơ bản nhất :

  • Least Frequently Used (LFU) : theo dõi tần suất truy cập một dữ liệu. Các dữ liệu có số lần truy cập thấp nhất được loại bỏ đầu tiên.
  • Least Recently Used (LRU) : lưu trữ các dữ liệu được truy cập gần đây gần đầu bộ đệm. Khi bộ đệm đạt đến giới hạn của nó, các liệu được truy cập gần đây nhất sẽ bị xóa.
  • Most Recently Used (MRU) : loại bỏ các dữ liệu truy cập gần đây nhất đầu tiên. Cách tiếp cận này là tốt nhất khi các data cũ có nhiều khả năng được sử dụng.

So sánh Cache và Ram

Tiêu chí Cache RAM (Random Access Memory)
Khái niệm Bộ nhớ nhỏ, cực nhanh dùng lưu dữ liệu thường xuyên truy cập nhất Bộ nhớ chính của hệ thống, lưu trữ tạm thời toàn bộ chương trình và dữ liệu đang chạy
Tốc độ truy xuất Rất nhanh (nhanh hơn RAM nhiều lần) Nhanh nhưng chậm hơn cache
Kích thước Nhỏ (vài KB đến vài MB) Lớn hơn cache nhiều (hàng GB)
Vị trí Gắn trực tiếp vào CPU (L1, L2, L3 cache) Nằm trên mainboard, kết nối CPU qua bus
Mục đích sử dụng Giảm thời gian truy cập dữ liệu lặp lại cho CPU Lưu trữ chương trình, dữ liệu của hệ điều hành và ứng dụng đang chạy
Quản lý bởi Bộ xử lý (CPU quản lý trực tiếp) Hệ điều hành quản lý
Cơ chế hoạt động Lưu dữ liệu thường xuyên truy cập (dự đoán truy xuất) Load dữ liệu từ ổ cứng khi cần, làm việc với toàn bộ ứng dụng
Tính bền vững Không (mất dữ liệu khi tắt máy) Không (mất dữ liệu khi tắt máy)
Chi phí sản xuất Rất đắt, do tốc độ cao, tích hợp trong CPU Rẻ hơn cache trên mỗi GB

About the Author

Đức Phát

View all author's posts

Leave a Comment

Your email address will not be published. Required fields are marked *

Bài viết khác

Sử dụng Request/Response trong ứng dụng RESTful mô hình MVC

DTO là gì? DTO (Data Transfer Object) là một object trung gian dùng để truyền dữ liệu giữa client – server hoặc giữa các service trong ứng dụng web/API theo kiến trúc RESTful API. DTO chỉ chứa các thông tin cần thiết mà client hoặc service khác cần (ví dụ: Login Form chỉ cần thông […]

Docker

Docker là gì? Docker là một nền tảng mã nguồn mở cho phép bạn đóng gói, phân phối và chạy ứng dụng bên trong các “container” – những môi trường ảo nhẹ, cô lập nhưng vẫn chia sẻ nhân hệ điều hành của máy chủ. Khái niệm then chốt ở đây là “containerization”: thay vì […]

Kiểm thử phần mềm

Testing là gì? Quá trình kiểm thử phần mềm (software testing) là một chuỗi hoạt động có hệ thống nhằm đánh giá chất lượng, độ ổn định và tính đúng đắn của một ứng dụng so với yêu cầu ban đầu. Không đơn thuần chỉ là tìm ra lỗi, testing còn giúp đảm bảo rằng […]

Tìm hiểu Kafka

Kafka là gì? Apache Kafka là một nền tảng phân phối sự kiện phân tán mã nguồn mở được phát triển bởi Apache Software Foundation và được viết bằng Java và Scala. Kafka ban đầu được phát triển bởi LinkedIn và sau đó được mở nguồn cho Quỹ phần mềm Apache (Apache Software Foundation) vào đầu năm 2011. (đồng sáng lập […]

Tìm hiểu RabbitMQ

RabbitMQ là gì? RabbitMQ là một phần mềm trung gian giúp các hệ thống, server, ứng dụng có thể giao tiếp, trao đổi dữ liệu với nhau. Nhiệm vụ của RabbitMQ được hiểu đơn giản là: nhận message từ nhiều nguồn => lưu trữ, sắp xếp sao cho hợp lý => đẩy tới đích đến. Là […]

Tìm hiểu về Message Broker

Message Broker là gì Message Broker (hay còn gọi là “trình môi giới thông điệp”) là một thành phần trung gian chuyên xử lý việc gửi, nhận, định tuyến và chuyển tiếp thông điệp (message) giữa các thành phần (ứng dụng, dịch vụ) trong hệ thống. Nó cho phép giao tiếp phi đồng bộ giữa […]