
Bạn có biết?
Mỗi khi bạn lướt Twitter, đặt đồ ăn trên Grab, hay chơi game online — có một công nghệ đang âm thầm xử lý hàng triệu request mỗi giây. Đó chính là Redis.
Trong bài viết này, chúng ta sẽ tìm hiểu Redis là gì, tại sao nó phổ biến đến vậy, và khi nào bạn nên (và không nên) sử dụng nó.
Redis là gì?
Redis (Remote Dictionary Server) là một hệ thống lưu trữ dữ liệu in-memory mã nguồn mở. Thay vì ghi dữ liệu xuống ổ cứng như các database truyền thống, Redis giữ mọi thứ trong RAM — giúp tốc độ đọc/ghi cực nhanh, có thể lên đến 100,000+ operations/giây.
Nhưng Redis không chỉ là một key-value store đơn giản. Nó hỗ trợ nhiều cấu trúc dữ liệu phong phú:
- Strings — Chuỗi ký tự, số, hoặc binary data
- Lists — Danh sách có thứ tự, giống LinkedList
- Sets — Tập hợp không có thứ tự, không trùng lặp
- Sorted Sets — Tập hợp có thứ tự (dùng cho leaderboard)
- Hashes — Object/Map, lưu trữ field-value pairs
- Streams — Log có thứ tự, hỗ trợ consumer groups
- Bitmaps/HyperLogLogs — Cấu trúc đặc biệt cho thống kê
Tại sao Redis phổ biến?
1. Tốc độ ánh sáng
Vì dữ liệu nằm trong RAM, Redis có độ trễ chỉ ~1ms. So với database truyền thống (10-100ms), nhanh hơn gấp 10-100 lần.
# Benchmark: Redis có thể xử lý 100K+ SET operations/giây
$ redis-benchmark -t set,get -n 100000 -q
SET: 117,647.06 requests per second
GET: 119,047.62 requests per second
2. Đơn giản nhưng mạnh mẽ
Redis có API cực kỳ đơn giản. Chỉ cần 3 dòng code là bạn đã có thể lưu và lấy dữ liệu:
# Python
import redis
r = redis.Redis()
r.set("user:1001:name", "Tan")
print(r.get("user:1001:name")) # b"Tan"
3. Linh hoạt cho nhiều use case
Redis không chỉ dùng làm cache. Nó có thể đảm nhận nhiều vai trò:
- Cache — Lưu kết quả query, giảm tải database
- Session Store — Lưu session người dùng (thay vì file/cookie)
- Message Queue — Xử lý background jobs (dùng Lists hoặc Streams)
- Rate Limiter — Giới hạn số request/phút
- Leaderboard — Bảng xếp hạng game (dùng Sorted Sets)
- Pub/Sub — Giao tiếp real-time giữa các microservices
Redis trong thực tế
Nhiều công ty lớn đang sử dụng Redis ở quy mô production:
- Twitter — Lưu timeline, follower lists
- GitHub — Cache API responses, rate limiting
- Stack Overflow — Cache questions, sessions
- Slack — Real-time messaging, presence detection
- Grab/Gojek — Driver matching, surge pricing
Khi nào KHÔNG nên dùng Redis?
Redis không phải là giải pháp cho mọi vấn đề. Tránh dùng Redis khi:
- ❌ Cần lưu trữ dữ liệu lớn hơn RAM (hàng TB)
- ❌ Cần query phức tạp (JOIN, GROUP BY) → dùng PostgreSQL/MySQL
- ❌ Cần ACID transactions nghiêm ngặt
- ❌ Dữ liệu ít thay đổi, không cần tốc độ cao
So sánh nhanh
| Tiêu chí | Redis | MySQL | MongoDB |
|---|---|---|---|
| Tốc độ | ⚡ Rất nhanh | 🐢 Trung bình | 🐇 Nhanh |
| Lưu trữ | In-memory | Disk-based | Disk-based |
| Cấu trúc dữ liệu | Key-value + nhiều kiểu | Relational | Document |
| Query | Đơn giản | SQL phức tạp | Flexible |
| Use case chính | Cache, Queue, Real-time | Transactional | Flexible schema |
Best Practices
- Chọn đúng tool — Redis không thay thế database, dùng làm cache/queue/session
- Monitor memory — Dùng
INFO memoryđể theo dõi RAM usage - Set TTL — Luôn đặt expiration cho keys tạm thời
- Dùng connection pool — Tránh tạo connection mới mỗi request
- Backup định kỳ — Dùng RDB snapshots cho disaster recovery
Bước tiếp theo
Bạn đã hiểu Redis là gì và tại sao nó quan trọng. Trong bài tiếp theo, chúng ta sẽ cài đặt Redis trên Docker, Ubuntu và Windows — sẵn sàng để thực hành ngay!
👉 Bài tiếp theo: Cài đặt Redis (Docker, Ubuntu, macOS và Windows)