post-image

Redis là gì ? Tại sao lại nên sử dụng nó ?

Tổng quan

Ban đầu khi lập trình chúng ta hay sử dụng các file tệp để lưu trữ dữ liệu, sau này công nghệ phát triển hơn chúng ta sử dụng các cơ sở dữ liệu quan hệ để lưu trữ các thông tin vào trong đây. Redis cũng được sử dụng với mục đích như vậy. Nó được sử dụng để lưu trữ các dữ liệu có cấu trúc với tốc độ nhanh. Vậy Redis là gì ? Tại sao chúng ta lại nên dùng nó cùng tìm hiểu ở bài này nhé!

Redis là gì ?

Redis là tên viết tắt của Remote Dictionary Server, là kho dữ liệu khóa-giá trị, trong bộ nhớ, mã nguồn mở và có tốc độ truy cập nhanh để dùng để lưu trữ dữ liệu có cấu trúc, làm database, bộ nhớ cache.

redis là gì

Lợi ích của việc sử dụng Redis

  • Kho dữ liệu trong bộ nhớ: Toàn bộ dữ liệu Redis nằm trong bộ nhớ chính của máy chủ.
  • Cấu trúc dữ liệu linh hoạt: Kiểu dữ liệu gồm có String, List, Set,…
  • Đơn giản dễ sử dụng: chỉ cần viết vài dòng lệnh là chúng ta đã có thể truy cập, lưu trữ và sử dụng dữ liệu.
  • Khả năng mở rộng: Redis là dự án mã nguồn mở được một cộng đồng đông đảo ủng hộ. 

Một số ứng dụng của Redis

  • Caching: Sử dụng làm bộ nhớ đệm. Chính tốc độ đọc ghi nhanh mà Redis có thể làm bộ nhớ đệm, nơi chia sẻ dữ liệu giữa các ứng dụng hoặc làm database tạm thời.
  • Counter: Sử dụng làm bộ đếm. Với thuộc tính tăng giảm thông số rất nhanh trong khi dữ liệu được lưu trên RAM, sets và sorted sets. Chúng ta có thể sử dụng Counter để làm các bảng xếp hạng game, đếm số lượt view của 1 website.
  • Machine Learning: Các ứng dụng kiểu mới, chịu sự chi phối của dữ liệu yêu cầu machine learning phải có khả năng nhanh chóng xử lý được dữ liệu theo khối lượng lớn, đa dạng, tốc độ cao và tự động hóa quá trình ra quyết định nên sử dụng Redis là một lựa chọn không tồi.
  • Publish/Suscribe (Pub/Sub): Tạo kênh chia sẻ dữ liệu. Redis hỗ trợ tạo các channel để trao đổi dữ liệu giữa publisher và subscriber giống như channel trong Socket Cluster hay topic trong Apache Kafka. 
  • Queues: Tạo hàng đợi để xử lý lần lượt các request. Redis cho phép lưu trữ theo list và cung cấp rất nhiều thao tác với các phần tử trong list, vì vậy nó còn được sử dụng như một message queue.

Các kiểu dữ liệu trong Redis

Khác với các kiểu dữ liệu quan hệ như là MySQL, SQL Server, PostgresSQL, Redis không lưu trữ dữ liệu dạng bảng mà lưu trữ dưới dạng Key-Value. Thực tế thì memcache cũng làm vậy, nhưng kiểu dữ liệu của memcache bị hạn chế, không đa dạng được như Redis, do đó không hỗ trợ được nhiều thao tác từ phía người dùng. Dưới đây là sơ lược về các kiểu dữ liệu Redis dùng để lưu value.

String: string, integer hoặc float. Redis có thể làm việc với cả string, từng phần của string, cũng như tăng/giảm giá trị của integer, float.

List: List là một danh sách của strings, sắp xếp theo thứ tự insert. Redis có thể thêm một phần tử vào đầu hoặc cuối list. List phù hợp cho các bài toán cần thao tác với các phần tử gần đầu và cuối vì việc truy xuất này là cực nhanh, cho dù insert cả triệu phần tử. Tuy nhiên nhược điểm là việc truy cập vào các phần tử ở giữa list rất chậm.

Set: tập hợp các string (không được sắp xếp). Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, kiểm tra sự xuất hiện của phần tử trong tập hợp. Ngoài ra Redis còn hỗ trợ các phép toán tập hợp, gồm intersect/union/difference.

Hash: lưu trữ hash table của các cặp key-value, trong đó key được sắp xếp ngẫu nhiên, không theo thứ tự nào cả. Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, cũng như đọc tất cả giá trị.

Sorted Set (ZSET): là 1 danh sách, trong đó mỗi phần tử là map của 1 string (member) và 1 floating-point number (score), danh sách được sắp xếp theo score này. Các phần tử của zset được sắp xếp theo thứ tự từ score nhỏ tới lớn.

Ngoài ra, Redis còn hỗ trợ các data types khác như: Bit arrays, HyperLogLogs, Streams.

Khả năng hỗ trợ ngôn ngữ

Redis hỗ trợ phần lớn các ngôn ngữ lập trình như là:

  • Java
  • PHP
  • Python
  • JavaScript
  • C#

KHOÁ HỌC LẬP TRÌNH DÀNH CHO NGƯỜI MỚI

Leave a Reply

Your email address will not be published.