
Redis (Remote Dictionary Server) là hệ thống lưu trữ cấu trúc dữ liệu trong bộ nhớ, được sử dụng rộng rãi như cơ sở dữ liệu, cache, message broker. Với tốc độ cao và hỗ trợ nhiều loại dữ liệu phức tạp, Redis trở thành phần không thể thiếu trong kiến trúc hiện đại của các ứng dụng web, mobile và AI. Bài viết này khám phá cách hoạt động, cấu trúc dữ liệu, use case thực tế và so sánh với Memcached.
Giới thiệu Redis
Redis là hệ thống lưu trữ key-value trong bộ nhớ, hỗ trợ persistence tùy chọn (RDB và AOF). Khác với database quan hệ truyền thống, Redis được thiết kế để hoạt động chủ yếu trong RAM, cho phép truy xuất dữ liệu dưới một milisecond. Dự án này bắt đầu vào năm 2009 bởi Salvatore Sanfilippo và hiện nay được dùng bởi GitHub, Twitter, Stack Overflow và hàng triệu ứng dụng khác.
Bạn có thể tìm hiểu sâu hơn về cấu trúc Redis trên trang chính thức của Redis hoặc khóa học Redis dành cho người mới bắt đầu từ freeCodeCamp.

Cấu trúc dữ liệu chính trong Redis
Redis cung cấp hơn 20 loại dữ liệu, bao gồm cả các cấu trúc phức tạp như:
- Strings: Chuỗi đơn giản, hỗ trợ tăng giảm nguyên tử, nhúng JSON.
- Hashes: Bản đồ field-value, lý tưởng để lưu trữ thông tin người dùng hoặc cấu hình.
- Lists: Danh sách có thứ tự, hỗ trợ push/pop từ cả hai đầu, dùng làm hàng đợi.
- Sets: Tập hợp không có thứ tự, các phần tử duy nhất, hỗ trợ giao tiếp hiệu quả.
- Sorted Sets (ZSet): Tập hợp có điểm số, sắp xếp tự động, dùng cho leaderboard.
- Streams: Log liên tục, hỗ trợ consumer groups, dùng cho event streaming.
- JSON: Lưu trữ và truy vấn tài liệu JSON nguyên vẹn.
- Geospatial: Lưu tọa độ, tính khoảng cách Haversine, dùng cho ứng dụng bản đồ.
Persistence: RDB và AOF
Redis có hai chế độ lưu trữ xuống ổ để đảm bảo dữ liệu không mất khi tắt máy:
- RDB (Redis Database Backup): Tạo snapshot định kỳ (mặc định mỗi 60s nếu có ít nhất 1 thay đổi). Phục hồi nhanh nhưng có thể mất dữ liệu giữa hai lần sao lưu.
- AOF (Append Only File): Ghi mỗi lệnh viết vào file log, có thể sync mỗi giây hoặc mỗi lệnh. Đảm bảo độ bền cao nhưng file lớn hơn và phục hồi chậm hơn.
- Kết hợp RDB + AOF: Sử dụng cả hai để đạt được cả tốc độ và độ tin cậy cao.

Replication và High Availability
Redis hỗ trợ sao chép master-replica để mở rộng khả năng đọc và tăng độ tin cậy:
- Master-Replica: Một nút master ghi dữ liệu, nhiều nút replica đồng bộ dạng chỉ đọc.
- Redis Sentinel: Hệ thống giám sát tự động chuyển master khi thất bại, thông báo qua API.
- Redis Cluster: Phân tán dữ liệu qua sharding, tự động cân bằng tải và phục hồi khi node lỗi.
Use case thực tế của Redis
Redis được dùng trong hàng nghìn trường hợp, bao gồm:
- Cache: Lưu trữ kết quả truy vấn expensive, giảm tải database chính.
- Rate limiting: Đếm số request từ IP hoặc user trong thời gian nhất định.
- Session store: Lưu trữ trạng thái đăng nhập của người dùng trên web và mobile app.
- Leaderboard: Sử dụng Sorted Set để lưu điểm và xếp hạng theo thời gian thực.
- Pub/Sub: Gửi tin nhắn real-time giữa các dịch vụ, hỗ trợ pattern matching.
- Vector search: Tích hợp với mô hình AI để tìm kiếm tương đồng vector (hình img_2_2).

Redis so với Memcached
Memcached là hệ thống cache đơn giản hơn, chỉ hỗ trợ strings và không có persistence. Bảng so sánh nhanh:
| Tiêu chí | Redis | Memcached |
|---|---|---|
| Cấu trúc dữ liệu | Strings, Hashes, Lists, Sets, Sorted Sets, Streams, JSON, Geospatial | Chỉ Strings |
| Persistence | Có (RDB/AOF) | Không |
| Replication | Có (master-replica, Sentinel, Cluster) | Không |
| Pub/Sub | Có | Không |
| TTL linh hoạt | Có (per-key expiration) | Có (nhưng ít linh hoạt hơn) |
| Atomic operations | Có (INCR, HINCRBY, ZADD…) | Giới hạn |
| Use case phù hợp | Cache nâng cao, message broker, session store, leaderboard, vector search | Cache đơn giản, vorübergehend |
Kết luận
Redis là công cụ đa dụng mạnh mẽ cho bất kỳ nhà phát triển nào làm việc với ứng dụng web, mobile hay AI. Với hỗ trợ đa dạng cấu trúc dữ liệu, persistence linh hoạt và hệ sinh thái phong phú, Redis vượt xa Memcached trong hầu hết các trường hợp sử dụng thực tế. Nếu bạn đang tìm giải pháp cache hoặc lưu trữ tạm thời hiệu quả, Redis là lựa chọn hàng đầu. Bạn có thể tìm hiểu thêm về bảo mật và quản lý Redis trên tài liệu chính thức để triển khai production một cách an toàn.
Bảo mật và giám sát hiệu năng Redis
Khi triển khai Redis production, cần thiết lập mật khẩu ACL, bật TLS, giới hạn bộ nhớ và theo dõi Slowlog để phát hiện truy vấn chậm. Redis cũng tích hợp sẵn lệnh INFO cho phép giám sát real-time về bộ nhớ, kết nối, persistence và replication. Các công cụ như Redis Insight hay Prometheus exporter giúp theo dõi latency và fragmentation một cách tự động.
Xu hướng tương lai
Redis đang mở rộng sang vector search, time series, và graph database trong phiên bản Redis Stack. Cộng đồng Redis ngày càng lớn với hơn 30.000 sao trên GitHub và hàng ngàn công ty sử dụng. Việc học Redis cơ bản là nền tảng quan trọng để nâng cao hiệu năng ứng dụng và theo kịp xu hướng kiến trúc microservices hiện đại.
