
Redis là một kho dữ liệu in-memory mã nguồn mở được sử dụng rộng rãi nhất trong giới developer hiện nay. Với tốc độ đọc ghi tính bằng micro giây, Redis được dùng làm cache, message broker và cơ sở dữ liệu chính cho hàng loạt ứng dụng hiện đại. Hiểu rõ Redis giúp bạn tối ưu hiệu năng hệ thống và giảm tải đáng kể cho database truyền thống.
Redis là gì?
Redis (Remote Dictionary Server) là một in-memory data store mã nguồn mở, lưu toàn bộ dữ liệu trong RAM để đạt tốc độ siêu nhanh. Khác với cơ sở dữ liệu truyền thống ghi lên đĩa cứng, Redis xử lý hàng trăm nghìn request mỗi giây nhờ dữ liệu nằm ngay trong bộ nhớ vật lý.

Ban đầu được phát triển bởi Salvatore Sanfilippo năm 2009, Redis thuộc sở hữu và phát triển bởi Redis Ltd (trước là Redis Labs). Cộng đồng yêu thích nó vì đơn giản, mạnh mẽ và cực kỳ nhanh. Redis hiện là cơ sở dữ liệu NoSQL phổ biến thứ năm trên bảng xếp hạng DB-Engines.
Cấu trúc dữ liệu đa dạng
Điểm nổi bật nhất của Redis là hỗ trợ nhiều cấu trúc dữ liệu phong phú, không chỉ giới hạn ở dạng key-value đơn giản:
- Strings – chuỗi cơ bản, dùng cho cache và đếm, giới hạn 512MB mỗi key.
- Lists – danh sách có thứ tự, dùng cho hàng đợi công việc và bảng feed.
- Sets – tập hợp không trùng, dùng cho thẻ tag, người theo dõi.
- Sorted Sets – tập hợp có điểm số, dùng cho bảng xếp hạng và leaderboard.
- Hashes – bảng băm như object, lưu profile người dùng và đối tượng phức tạp.
- Streams – luồng dữ liệu theo thời gian, dùng cho event log và messaging.
Ứng dụng thực tế của Redis
Redis hiện diện trong hầu hết hệ thống lớn từ startup đến đại gia công nghệ. Dưới đây là các use case phổ biến nhất:
| Use case | Cấu trúc dữ liệu | Ví dụ cụ thể |
|---|---|---|
| Cache kết quả | String, Hash | Cache trang sản phẩm, kết quả API phức tạp |
| Session store | String với TTL | Lưu phiên đăng nhập người dùng |
| Hàng đợi công việc | List, Stream | Job queue cho Celery hay Sidekiq |
| Rate limiting | Counter với expiry | Giới hạn request mỗi phút |
| Bảng xếp hạng | Sorted Set | Top game thủ, đơn hàng giá cao |
| Pub/Sub | Channel | Thông báo realtime cho dashboard |
| Geospatial | GEO | Tìm điểm lân cận, gợi ý quán cà phê |
Lệnh Redis cơ bản
Cú pháp Redis rất trực quan. Cặp lệnh phổ biến nhất là SET và GET:
SET user:100 "Nguyen Van A"
GET user:100
# Kết quả: "Nguyen Van A"
SET session:abc 1 EX 60
# Tự động hết hạn sau 60 giây
DEL user:100
# Xóa key khỏi memory
EXPIRE session:abc 30
# Đặt TTL 30 giây cho session

Redis persistence và cluster
Tuy lưu trong RAM, Redis vẫn hỗ trợ persistence qua hai cơ chế: RDB snapshot ghi dữ liệu định kỳ ra đĩa, và AOF (Append Only File) ghi log từng lệnh ghi để phục hồi chính xác. Bạn có thể dùng chung cả hai cho mức độ an toàn dữ liệu tối ưu.
Về khả năng mở rộng, Redis Cluster tự động chia dữ liệu trên nhiều node thông qua sharding, cung cấp tính chịu lỗi cao khi một node bị sập. Redis Sentinel quản lý failover tự động, thay thế master node khi cần thiết mà không cần can thiệp thủ công.
Các lệnh thường dùng khác
Ngoài SET và GET, một số lệnh Redis hay dùng trong công việc hằng ngày: INCR tăng biến đếm nguyên tử (atomic), LPUSH/RPOP đẩy và lấy phần tử khỏi list, HSET/HGETALL thao tác hash, ZADD/ZRANGE thêm và truy vấn sorted set, TTL kiểm tra thời gian sống của key. Các lệnh này đi kèm độ phức tạp thời gian khác nhau, thường là O(1) hoặc O(log N), cần lưu ý để tránh tạo key khổng lồ gây chậm system.
Redis so với Memcached
Memcached là lựa chọn cache đời cũ đơn giản, chỉ hỗ trợ Strings. Redis vượt trội nhờ đa dạng cấu trúc dữ liệu, persistence, cluster và replication tích hợp sẵn. Hiện tại Memcached gần như không còn được chọn trong các dự án mới, Redis là lựa chọn mặc định.
Lưu ý khi dùng Redis
Chọn Redis khi cần tốc độ cực cao cho dữ liệu có dung lượng vừa phải, khi cần cache giảm tải database, hoặc khi cần cấu trúc dữ liệu phức tạp như sorted set cho bảng xếp hạng. Tránh dùng Redis làm nơi lưu trữ chính cho dữ liệu quan trọng cần đảm bảo durability tuyệt đối, vì dung lượng bị giới hạn bởi RAM hệ thống và mọi thứ mất khi RAM hết.
Kết luận
Redis là công cụ không thể thiếu trong kho vũ khí của bất kỳ developer backend nào. Hiểu các cấu trúc dữ liệu và use case phù hợp sẽ giúp bạn tận dụng tối đa sức mạnh của nó. Tìm hiểu thêm chi tiết tại trang tài liệu chính thức Redis.
