Site logo

Redis là gì? Tìm hiểu In-Memory Database mạnh mẽ cho ứng dụng hiện đại

5:00 read

Redis là gì?

Redis (Remote Dictionary Server) là một hệ thống lưu trữ dữ liệu dạng key-value trong bộ nhớ (in-memory) mã nguồn mở, được viết bằng ngôn ngữ C. Redis nổi bật với hiệu suất cực kỳ cao, khả năng xử lý hàng triệu requests mỗi giây, và hỗ trợ nhiều cấu trúc dữ liệu phức tạp như strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, và geospatial indexes.

Được phát triển bởi Salvatore Sanfilippo vào năm 2009, Redis đã trở thành một trong những database phổ biến nhất thế giới, đặc biệt trong các ứng dụng yêu cầu tốc độ xử lý nhanh và độ trễ thấp. Redis không chỉ là một simple cache mà còn là một data structure server đa năng với khả năng persistence, replication, clustering, và pub/sub messaging.

Đặc điểm nổi bật của Redis

1. In-Memory Storage
Redis lưu trữ toàn bộ dataset trong RAM, điều này cho phép thời gian truy cập dữ liệu cực kỳ nhanh (thường dưới 1ms). Khác với traditional databases lưu trữ trên disk và phải đọc/ghi từ đĩa cứng, Redis có thể truy xuất dữ liệu gần như tức thì.

2. Data Structures
Redis không chỉ là key-value store đơn giản mà hỗ trợ nhiều loại data structures:

  • Strings: Giá trị text hoặc binary lên đến 512MB
  • Lists: Linked lists với operations ở cả hai đầu
  • Sets: Collections không có thứ tự với các phần tử unique
  • Sorted Sets: Sets có điểm số (score) để sắp xếp
  • Hashes: Maps giữa string fields và values
  • Bitmaps: Bit-level operations trên strings
  • HyperLogLogs: Probabilistic data structure để đếm unique items
  • Geospatial Indexes: Lưu trữ và query tọa độ địa lý

3. Atomic Operations
Tất cả operations trong Redis đều atomic, nghĩa là chúng được thực thi hoàn toàn hoặc không thực thi gì cả. Điều này đảm bảo data consistency trong concurrent environments.

4. Persistence
Mặc dù là in-memory database, Redis cung cấp nhiều cơ chế persistence:

  • RDB (Redis Database): Point-in-time snapshots
  • AOF (Append Only File): Log mọi write operations
  • Hybrid: Kết hợp RDB và AOF

5. Replication và High Availability
Redis hỗ trợ master-slave replication với automatic failover thông qua Redis Sentinel, và horizontal scaling thông qua Redis Cluster.

Tại sao nên sử dụng Redis?

Hiệu suất vượt trội

Redis có thể xử lý hơn 1 triệu requests/giây trên một single instance với độ trễ submillisecond. Điều này làm cho Redis trở thành lựa chọn hoàn hảo cho:

  • Real-time applications: Chat systems, gaming leaderboards, live dashboards
  • High-traffic websites: E-commerce platforms với hàng triệu users
  • API rate limiting: Kiểm soát số lượng requests từ clients
  • Session management: Lưu trữ user sessions với expiration tự động

Đơn giản và linh hoạt

Redis có API đơn giản, dễ học và dễ sử dụng. Với hơn 200 commands, developers có thể thực hiện các operations phức tạp một cách intuitive:

# Set một giá trị
SET user:1000 "John Doe"

# Get giá trị
GET user:1000

# Set với expiration (10 giây)
SETEX session:abc123 10 "user_data"

# Increment counter
INCR page_views

# Add vào list
LPUSH notifications "New message"

Giảm tải cho Primary Database

Redis thường được sử dụng như một caching layer giữa application và primary database (MySQL, PostgreSQL, MongoDB, etc.). Khi một query được thực hiện:

  1. Application kiểm tra Redis cache trước
  2. Nếu data có trong cache (cache hit), trả về ngay lập tức
  3. Nếu không có (cache miss), query từ database và lưu vào Redis
  4. Các requests tiếp theo sẽ hit cache, giảm load cho database

Điều này có thể giảm 70-90% load cho primary database và cải thiện response time đáng kể.

Yêu cầu đăng nhập

Vui lòng đăng nhập để truy cập nội dung này

Additional Resources

Course Guide

Comprehensive PDF guide with examples

GitHub Repository

Example code for all lessons

Discussion

Have a question about this lesson? Post it here and get answers from instructors and peers.