Back to Blog
Tool20 min7 views

Redis

Author

Minh Khoa

Author

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.


🏆 5. Leaderboard / Counter

Dùng Sorted Set để lưu điểm:

ZADD leaderboard 100 player1
ZADD leaderboard 250 player2
ZREVRANGE leaderboard 0 1 WITHSCORES

→ Trả về top 1 người chơi nhanh như chớp.


5️⃣ Redis có lưu dữ liệu lâu được không?

Có, Redis vẫn ghi dữ liệu xuống ổ cứng bằng 2 cách:

  • RDB: snapshot (chụp toàn bộ RAM mỗi X phút).
  • AOF: ghi log mỗi lệnh SET, INCR, DEL

Nhưng Redis không thay thế database, nó là cache tạm thời.

Nếu mất điện → dữ liệu có thể mất 1 phần.


6️⃣ Redis có hết hạn tự động

Redis có TTL – Time To Live:

SET user:1 "Na" EX 600

→ Sau 10 phút tự xóa.

Rất hữu ích cho cache hoặc token đăng nhập.


7️⃣ Redis có cluster (nhiều server)

Khi app to, Redis có thể chạy nhiều node:

  • 1 node chính (master)

  • vài node phụ (replica)

    → Tự nhân bản dữ liệu và scale ra nhiều máy.


8️⃣ Redis không chỉ cho web

Redis còn dùng cho:

  • Game server (lưu leaderboard, session người chơi).
  • IoT (lưu trạng thái thiết bị).
  • Machine learning (cache model hoặc inference result).
  • Analytics (đếm lượt xem, lượt login…).