Redis
Minh Khoa
Tác giả
1️⃣ Redis là gì?
Redis = bộ nhớ tạm siêu nhanh, chuyên dùng để lưu dữ liệu ngắn hạn.
Nó giống như RAM cho server vậy.
Thay vì mỗi lần client hỏi server → server phải “mò” xuống database,
thì Redis giữ sẵn kết quả ở trên RAM → lần sau trả cực nhanh.
Ví dụ:
- User vừa xem sản phẩm A → cache sản phẩm A trong Redis 1 tiếng.
- Lần sau người khác xem → lấy từ Redis luôn, khỏi query DB.
2️⃣ Redis lưu dữ liệu kiểu gì?
Redis lưu theo dạng key – value:
Key Value user:1 {"name":"Na","age":22} token:xyz "abc123" leaderboard player1:100, player2:200
Giống như cái tủ đồ nhiều ngăn, mỗi ngăn là 1 key, trong đó chứa value.
3️⃣ Redis nhanh vì sao?
Vì nó:
- Lưu trực tiếp trên RAM (không phải ổ cứng).
- Chạy 1 luồng duy nhất, không cần lock lằng nhằng.
- Mọi thao tác như
GET,SET,INCR,LPUSH… đều chỉ mất vài micro giây.
4️⃣ Redis dùng để làm gì?
💨 1. Cache (tăng tốc)
Lưu dữ liệu tạm → không phải query database hoài.
# Lần đầu
GET user:123 → ❌ Không có
→ Query DB
→ SET user:123 '{"name":"Na"}'
# Lần sau
GET user:123 → ✅ Có cache, trả liền
🔐 2. Session (lưu đăng nhập)
Thay vì lưu session trong file, Redis giữ login user trong RAM:
SET session:abc123 { "userId": 5, "role": "admin" } EX 3600
→ Khi user gửi request, backend chỉ cần đọc session:abc123.
🧾 3. Queue (hàng đợi job)
Ví dụ user upload 1 ảnh → backend đẩy job vào Redis:
LPUSH job_queue {"file":"avatar.jpg","user":123}
Worker ở phía sau sẽ RPOP job ra để xử lý.
📢 4. Pub/Sub (realtime)
Redis có thể gửi message realtime giữa nhiều server:
PUBLISH chat:room1 "Na: Hello!"
SUBSCRIBE chat:room1
→ Tạo hệ thống chat realtime, thông báo, hoặc game event.