Redis Database: Công cụ nguồn mở được yêu thích trên toàn thế giới

Redis Database: Công cụ nguồn mở được yêu thích trên toàn thế giới

September 4, 2024 0 By Nam Vu

Redis là một trong những cơ sở dữ liệu nguồn mở được cộng đồng trên toàn thế giới yêu thích và sử dụng rộng rãi. Ngoài những lý do phổ biến như tốc độ nhanh và khả năng hoạt động trên bộ nhớ (in-memory database) dễ dàng cài đặt và sử dụng, chúng ta hãy tìm hiểu thêm những điểm thú vị trong kiến trúc của Redis.

1. Kiến trúc Single-threaded của Redis

Đầu tiên, Redis sử dụng kiến trúc ứng dụng đơn luồng (single-threaded). Lý do là vì CPU không phải là nút thắt cổ chai của Redis, mà thường là bộ nhớ (memory) hoặc băng thông mạng (network bandwidth). Bằng cách sử dụng kiến trúc đơn luồng, Redis giảm thiểu thời gian chuyển đổi ngữ cảnh (context switching) và tiết kiệm tài nguyên CPU. Điều này giúp loại bỏ tình trạng đua tranh (race conditions), tránh các vấn đề liên quan đến khóa (locking), và ngăn ngừa tình huống kẹt khóa (deadlock).

2. Cấu trúc dữ liệu độc đáo

Thứ hai, Redis có cấu trúc dữ liệu độc đáo, điều này đã góp phần vào sự phổ biến và được nhiều lập trình viên yêu thích. Ban đầu, Redis được sử dụng tương tự như Memcached. Tuy nhiên, Redis đã không ngừng phát triển và được sử dụng cho nhiều ứng dụng khác bao gồm hệ thống pub/sub, streaming, và các hàng đợi trong bộ nhớ.

3. Đảm bảo tính bền vững của dữ liệu

Redis cung cấp hai cơ chế để đảm bảo tính bền vững (persistence) thông qua hai mô hình: AOF (Append Only File) và RDB (Redis Database Backup Snapshot). Một điểm rất thú vị ở Redis là dù sử dụng kiến trúc đơn luồng, nhưng với cơ chế RDB snapshot, Redis vẫn có khả năng phục vụ các yêu cầu từ client đồng thời tiến hành snapshot hàng phút, điều này thực sự ấn tượng. 

Điều này đạt được là do Redis sử dụng phương pháp “fork” và “copy-on-write”. Khi RDB snapshot được kích hoạt, Redis tạo ra một tiến trình con từ tiến trình chính. Tiến trình con bắt đầu ghi dữ liệu vào một tệp RDB tạm thời. Khi tiến trình con hoàn tất việc ghi tệp RDB mới, nó sẽ thay thế tệp cũ. Trong quá trình này, tiến trình chính và tiến trình con chia sẻ bộ nhớ. Nhờ kỹ thuật chia sẻ bộ nhớ này, Redis có thể thực hiện snapshot của dữ liệu lên tới hàng gigabyte một cách nhanh chóng và hiệu quả.

#ntechdevelopers