23. Caching với Redis Giảm tải Database 99% 😱
Tập Làm Mentor
0:00 / 0:00
23. Caching với Redis Giảm tải Database 99% 😱
844 просмотра · 2 мес. назад
Tập Làm Mentor
1,13 тыс. подписчиков
844 просмотра · 2 мес. назад
📌 BÀI 23: CACHING VỚI REDIS – GIẢM TẢI DATABASE 99% VỚI SPRING CACHE ABSTRACTION
🔥 Database là điểm nghẽn lớn nhất của hệ thống! Mỗi truy vấn SQL mất 50-200ms, khi có hàng nghìn request cùng lúc, hệ thống sẽ quá tải. Giải pháp là Caching với Redis, giúp giảm thời gian response từ 200ms xuống còn 2ms! Trong bài học này, chúng ta sẽ:
✅ Hiểu Spring Cache Abstraction và các annotation quan trọng
✅ Cấu hình RedisCacheManager làm cache provider
✅ @Cacheable – cache kết quả API, tránh query database
✅ @CacheEvict – xóa cache khi dữ liệu thay đổi
✅ @CachePut – cập nhật cache với kết quả mới
✅ Cấu hình TTL (thời gian sống) riêng cho từng cache
✅ Demo thực tế với Postman và Redis Insight
✅ Best Practices và các lỗi thường gặp khi dùng cache
📂 Link code bài 23 (kèm giải bài tập nâng cao): https://github.com/dragon-ball-dev/sp...
Branch: chapter_3/lesson_23
📺 Playlist đầy đủ: • Tự học Spring Boot cho người mới bắt đầu 2026
⏱️ MỐC THỜI GIAN:
00:00 - Giới thiệu bài học: Tại sao cần Caching? Kịch bản Flash Sale & vấn đề nghẽn Database.
02:44 - Tư duy kiến trúc: Tìm hiểu Pattern Cache Aside (Query Aside).
03:10 - Phân tích luồng Đọc dữ liệu: Khái niệm Cache Hit vs. Cache Miss.
05:12 - Phân tích luồng Ghi/Cập nhật: Tránh vấn đề Stale Data (dữ liệu lỗi thời).
06:08 - Bộ ba Annotation quyền năng: @Cacheable, @CachePut, @CacheEvict.
07:25 - Phân tích chuyên sâu cơ chế hoạt động của @Cacheable.
09:00 - Lưu ý kinh điển: Lỗi Bypass AOP khi gọi nội bộ method (Self-invocation) và cách xử lý với @Lazy.
10:07 - Hướng dẫn Coding: Cấu hình RedisConfig & Bật tính năng @EnableCaching.
11:00 - Khởi tạo RedisCacheManager: Cấu hình TTL (Time-to-live) mặc định.
12:11 - Cấu hình Serializer: Tại sao nên dùng JSON thay vì JDK Serializer mặc định?
13:28 - Custom TTL cho từng loại dữ liệu (Product Detail vs. Product List).
15:52 - Giải thích tầm quan trọng của RedisCacheWriter trong môi trường đa luồng.
17:02 - Demo thực tế: Triển khai Caching cho Controller & Service.
21:10 - Giải thích tham số key và unless trong Annotation để tối ưu bộ nhớ.
24:18 - Fix lỗi kết nối Docker & Debug lỗi SerializationException.
28:15 - Kiểm tra kết quả trên Redis Insight: So sánh tốc độ trước và sau khi Cache (từ 900ms xuống 25ms).
31:52 - Demo @CachePut (Cập nhật) và @CacheEvict (Xóa/Clear Cache).
33:14 - 4 Cạm bẫy kinh điển khi làm Caching thực tế:
Bẫy 1: Cache Penetration (Xuyên thủng bộ nhớ đệm).
Bẫy 2: Cache Avalanche (Tuyết lở - nhiều key cùng hết hạn).
Bẫy 3: Cache Breakdown (Key "hot" hết hạn gây quá tải DB).
Bẫy 4: RAM đầy do quên đặt TTL.
36:15 - Tổng kết & Giới thiệu bài 24: Chống mua vượt số lượng kho với Distributed Lock.
🔔 ĐĂNG KÝ KÊNH để nhận bài 24: Distributed Lock với Redisson trong Spring Boot
💬 BÌNH LUẬN nếu bạn gặp lỗi khi cấu hình cache hoặc muốn hỏi về best practices.
🔥 CÔNG NGHỆ SỬ DỤNG:
Java 17+, Spring Boot 4.x
Redis, Spring Data Redis
Spring Cache Abstraction
RedisCacheManager, RedisTemplate
Jackson2JsonRedisSerializer
Postman, Redis Insight
#SpringBoot #Redis #Caching #SpringCache #Cacheable #RedisCacheManager #Java #Performance #Backend