Laravel 12 mang đến nhiều cải tiến đáng giá, và một trong số đó là Memoized Cache Driver (có từ Laravel 12.9)— một tính năng giúp cải thiện hiệu suất đáng kể cho các ứng dụng web thông qua việc lưu trữ kết quả truy vấn trong bộ nhớ RAM tạm thời.
Vậy Memoized Driver là gì? Nó hoạt động như thế nào? Và khi nào bạn nên sử dụng? Hãy cùng CodeTutHub tìm hiểu chi tiết trong bài viết này.
📦 Memoized Cache Driver là gì?
Memoized Cache Driver là một driver cache nội bộ mới trong Laravel 12, cho phép bạn tạm thời lưu trữ dữ liệu trong RAM PHP của 1 request (không ghi ra ổ cứng hay Redis). Dữ liệu này chỉ tồn tại trong vòng đời của 1 HTTP request rồi bị loại bỏ.
🧠 Đây là một loại cache tạm thời cực nhanh, dùng để tránh thực hiện lại các phép tính/truy vấn lặp lại trong cùng một request.
✅ Khi nào nên dùng Memoized Cache?
- Khi có các hàm/phép tính hoặc query được gọi lặp lại nhiều lần trong cùng một request.
- Khi bạn muốn tăng tốc mà không cần lưu cache lâu dài hoặc chia sẻ giữa người dùng.
- Khi bạn muốn bổ sung thêm tầng cache trong ứng dụng mà không tăng tải lên Redis/File.
🔧 Cấu hình Memoized Driver
Trong file config/cache.php, thêm cấu hình driver:
'stores' => [
// Các driver khác...
'memoized' => [
'driver' => 'memoized',
],
],Nếu bạn không cấu hình driver
memoized, các lệnhCache::store('memoized')hoặcCache::memo()sẽ báo lỗi.
⚡ Cách sử dụng Memoized Cache
📌 1. Dùng Cache::store('memoized')
$value = Cache::store('memoized')->remember('some_key', now()->addMinutes(5), function () {
return DB::table('users')->first();
});📌 2. Dùng cú pháp rút gọn Cache::memo()
Từ Laravel 12, bạn có thể dùng cú pháp siêu ngắn:
$value = Cache::memo()->remember('some_key', now()->addSeconds(60), function () {
return config('app.name');
});
Cache::memo()là alias choCache::store('memoized').
🔁 Kết hợp Redis và Memoized
Bạn hoàn toàn có thể dùng song song redis và memoized để tận dụng sức mạnh của 2 tầng cache:
$user = Cache::memo()->remember("user:{$id}", now()->addSeconds(30), function () use ($id) {
return Cache::store('redis')->remember("user:{$id}", now()->addMinutes(10), function () use ($id) {
return DB::table('users')->find($id);
});
});🧠 Ý tưởng:
- Redis là cache chính lâu dài, dùng cho các request khác.
- Memoized chỉ cache tạm trong 1 request hiện tại → giúp giảm truy vấn Redis lặp lại.
🆚 So sánh Memoized với các cache driver khác
| Driver | Tồn tại bao lâu | Tốc độ | Chia sẻ giữa request |
|---|---|---|---|
file | Nhiều phút/giờ | Trung bình | ✅ |
redis | Nhiều phút/giờ | Nhanh | ✅ |
database | Nhiều phút/giờ | Chậm | ✅ |
array | Trong request | Rất nhanh | ❌ |
memoized | Trong request | ⚡ Nhanh nhất | ❌ |
🎯 Khi nào không nên dùng Memoized
- Khi bạn cần chia sẻ dữ liệu giữa nhiều người dùng hoặc request.
- Trong các job queue, CLI command — vì chúng là các tiến trình độc lập.
- Khi dữ liệu cần được cache lâu dài hoặc invalidation thủ công.
📌 Tổng kết
Memoized Cache Driver là một bước tiến nhỏ nhưng mạnh mẽ giúp:
✅ Tránh truy vấn dư thừa
✅ Giảm tải Redis và DB
✅ Tăng tốc độ ứng dụng trong từng request
Laravel 12 ngày càng tiến gần hơn tới triết lý "cache everything efficiently, automatically."
Bạn có thể bắt đầu thay thế các đoạn query lặp lại bằng Cache::memo()->remember(...) để thấy ngay sự cải thiện hiệu suất. Và đừng quên kết hợp cùng Redis để tối ưu đa tầng!
👉 Theo dõi CodeTutHub để cập nhật thêm các tính năng mới nhất trong Laravel 12 và các tips tối ưu performance thực chiến nhé!








