Chuyên đề Redis: cache, data structure, persistence, cluster, blocking và thực tiễn kỹ thuật
Redis là một trong những hệ thống cache và in-memory data store hiệu năng cao phổ biến nhất trong backend. Khi học Redis, không nên chỉ dừng ở command và data type, mà còn phải hiểu các vấn đề kỹ thuật như chiến lược đọc/ghi cache, data structure tầng dưới, persistence, nguyên nhân blocking, quản lý memory, replication và cluster.
Dành cho ai
- Backend developer muốn học một cách có hệ thống về nguyên lý Redis, thiết kế cache và thực tiễn kỹ thuật.
- Bạn đang chuẩn bị cho các câu hỏi phỏng vấn liên quan đến data structure, persistence, cluster, high availability và cache consistency của Redis.
- Bạn đã sử dụng Redis trong project nhưng chưa nắm rõ các sự cố cache, blocking, memory fragmentation và cơ chế cluster.
- Engineer cần dùng Redis để triển khai delayed task, message queue, leaderboard, shopping cart và các chức năng khác.
Trọng tâm học
- Các data structure thường dùng của Redis phù hợp với những business scenario nào, encoding tầng dưới ảnh hưởng đến performance ra sao?
- Nên thiết kế giải pháp thế nào cho các vấn đề cache penetration, cache breakdown, cache avalanche và cache consistency?
- RDB, AOF, AOF rewrite và hybrid persistence trong Redis khác nhau thế nào?
- Vì sao Redis có thể bị blocking, làm thế nào để chẩn đoán slow command, big key, hot key và tác động của persistence?
- Master-slave replication, Sentinel và Cluster lần lượt giải quyết vấn đề gì, failover có những quy trình quan trọng nào?
- Khi dùng Redis để triển khai delayed task và message queue, các giới hạn về khả năng và rủi ro về reliability là gì?
Thứ tự đọc đề xuất
- Tổng hợp câu hỏi phỏng vấn cache cơ bản: trước tiên hiểu các trường hợp sử dụng cache, các sự cố cache và vấn đề consistency.
- Tổng hợp câu hỏi phỏng vấn Redis (phần 1), Tổng hợp câu hỏi phỏng vấn Redis (phần 2): xây dựng danh sách các vấn đề thường gặp về Redis.
- Giải thích chi tiết 5 data type cơ bản của Redis, Giải thích chi tiết 3 data type đặc biệt của Redis: nắm vững một cách có hệ thống data structure và các trường hợp sử dụng.
- Giải thích chi tiết 3 chiến lược đọc/ghi cache thường dùng, Giải thích chi tiết cơ chế persistence của Redis: bổ sung kiến thức về cache consistency và khả năng khôi phục dữ liệu.
- Tổng hợp các nguyên nhân blocking thường gặp của Redis, Giải thích chi tiết Redis Cluster: hiểu Redis trong môi trường production.
Bài viết cốt lõi
Cache cơ bản và chiến lược đọc/ghi
- Tổng hợp câu hỏi phỏng vấn cache cơ bản: giải thích các trường hợp sử dụng cache, cache penetration, cache breakdown, cache avalanche, cache consistency và cache eviction.
- Giải thích chi tiết 3 chiến lược đọc/ghi cache thường dùng: so sánh các chiến lược thường gặp như Cache Aside, Read/Write Through và Write Behind.
- Tổng hợp câu hỏi phỏng vấn Redis (phần 1) và Tổng hợp câu hỏi phỏng vấn Redis (phần 2): kết nối các kiến thức về Redis cơ bản, thread model, data structure, persistence, cluster và vấn đề production.
Data structure và ứng dụng điển hình
- Giải thích chi tiết 5 data type cơ bản của Redis: tìm hiểu data structure tầng dưới và các trường hợp sử dụng của String, List, Hash, Set, Sorted Set.
- Giải thích chi tiết 3 data type đặc biệt của Redis: tìm hiểu cách dùng và trường hợp sử dụng phù hợp của Bitmap, HyperLogLog và Geospatial.
- Vì sao Redis dùng skip list để triển khai ordered set: tìm hiểu cấu trúc skip list, độ phức tạp của truy vấn và lựa chọn triển khai của Sorted Set.
- Làm thế nào để triển khai delayed task dựa trên Redis?: so sánh các phương thức triển khai bằng expiration event, Sorted Set và Stream.
- Làm thế nào để triển khai message queue dựa trên Redis?: tìm hiểu sự khác biệt khi dùng List, Pub/Sub và Stream làm message queue.
Persistence, memory và cluster
- Giải thích chi tiết cơ chế persistence của Redis: trình bày một cách có hệ thống về RDB, AOF, AOF rewrite và hybrid persistence.
- Giải thích chi tiết memory fragmentation của Redis: tìm hiểu nguyên nhân tạo ra memory fragmentation, cách theo dõi metric và chiến lược dọn dẹp.
- Tổng hợp các nguyên nhân blocking thường gặp của Redis: tổng hợp các nguồn blocking như slow command, big key, persistence, master-slave synchronization, CPU và network.
- Giải thích chi tiết Redis Cluster: tìm hiểu master-slave replication, Sentinel, Cluster, slot migration và failover.
Câu hỏi thường gặp
- Vì sao Redis nhanh? Vì sao single thread vẫn có thể đáp ứng concurrency cao?
- Các data type thường gặp của Redis phù hợp với những business scenario nào?
- Vì sao Sorted Set sử dụng skip list?
- Cache penetration, cache breakdown và cache avalanche khác nhau thế nào, xử lý ra sao?
- Làm thế nào để bảo đảm consistency giữa cache và database?
- RDB và AOF khác nhau thế nào? AOF rewrite giải quyết vấn đề gì?
- Các nguyên nhân blocking thường gặp của Redis là gì? Làm thế nào để kiểm tra big key và slow command?
- Master-slave replication, Sentinel và Cluster của Redis khác nhau thế nào?
- Redis triển khai delayed task như thế nào? Rủi ro về reliability nằm ở đâu?
- Redis Stream có những giới hạn nào so với message queue truyền thống?
Chuyên đề liên quan
- Hệ thống kiến thức Database
- Hệ thống kiến thức High Performance
- Hệ thống kiến thức High Availability
- Chuyên đề Message Queue
Lời cuối
Nếu nội dung hữu ích với bạn, hãy tiện tay tặng JavaGuide một Star miễn phí để ủng hộ: GitHub | Gitee.
JavaGuide đã được duy trì gần bảy năm, tích lũy 6100+ commit, với sự chung tay hoàn thiện của 620+ contributor. Star, phản hồi và PR của bạn đều là động lực để dự án tiếp tục cập nhật.
Nếu bạn đang chuẩn bị phỏng vấn backend / phát triển ứng dụng AI, có thể tham khảo Knowledge Planet của tôi, bao gồm các project thực tế về backend và AI, tối ưu CV, hỏi đáp 1-1 và tài liệu về các trọng điểm thường gặp, đã được duy trì liên tục sáu năm.
