LARAVEL TUTORIALS
10 thủ thuật Lavavel giúp bạn code nhanh hơn! Routing trong Laravel, cách tạo Route và sử dung AZ Tạo Middleware trong Laravel đơn giản trong 5 phút Xử lý Authentication và Authorization trong Laravel Event và listener trong Laravel, cách tạo và quản lý cơ bản nhất Tạo broadcast event trong Laravel dễ dàng trong 10 phút Xử lý Form Validation trong Laravel từ A - Z Cách tạo Session và cookie trong Laravel dễ dàng như ăn cháo Top 10 Package Lavavel thường dùng trong dự án Laravel Sử dụng Task trong Laravel đơn giản trong 10 phút. Cách tạo API trong Laravel đơn giản chỉ trong 5 phút Cách tạo job trong Laravel sao cho hiệu quả? Queues trong Laravel, dùng để xử lý các tác vụ mất nhiều thời gian Cache trong Laravel, các loại Cache thường dùng trong Laravel Redis trong Laravel, biết cách sử dung Redis Laravel trong 5 phút Sử dụng Memcache trong Laravel tăng tốc độ truy cập website Unit Test trong Laravel, thực hành tạo testing Laravel A-Z 10 thủ thuật tối ưu quá trình Testing trong Laravel Top 7 thư viện Testing Laravel được dùng nhiều nhất Testbench và Orchestra Testbench trong Laravel, kiểm thử Laravel dễ dàng Cách dùng Browser Testing (Laravel Dusk) trong Laravel Cách tạo test case cho Controller trong Laravel Cách tạo test case cho Model trong Laravel Cách tạo Database Testing trong Laravel Real-time web applications là gì ? Tầm quan trọng trong Laravel Laravel WebSockets, các bước tạo WebSockets trong Laravel Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime Cách dùng Long polling trong Laravel để cải thiện trải nghiệm Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ Cách dùng Event Sourcing trong Laravel Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản Sử dụng Service Container trong Laravel dễ dàng Cách xử lý đa ngôn ngữ trong Laravel dễ dàng Tìm hiểu và sử dụng Service Provider trong Laravel Facades là gì? Cách dùng Facades trong Laravel Cách sử dụng Email Verification trong Laravel Cách dùng URL Generation trong Larevel Cách sử dụng Error Handling trong Laravel Cách dùng Encryption và decryption trong Laravel Cách sử dụng Relationships trong Laravel Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows Sử dụng Event trong Laravel Một cách quản lý filter trong Laravel
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cache trong Laravel, các loại Cache thường dùng trong Laravel

Cache là một công cụ hữu ích trong lập trình web để giảm thiểu thời gian truy vấn cơ sở dữ liệu và tăng tốc độ xử lý của ứng dụng. Laravel cung cấp nhiều phương thức để sử dụng cache một cách dễ dàng.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Các loại cache thường được sử dụng trong Laravel bao gồm: Cache file, Cache database, Cache Memcached, Cache Redis và Cache đám mây. Trong bài viết này, chúng ta sẽ tìm hiểu về các loại cache này và cách sử dụng chúng trong Laravel.

Cache trong Laravel là gì ?

Cache là một công cụ hữu ích để giảm thiểu thời gian truy vấn dữ liệu từ ổ cứng hoặc cơ sở dữ liệu. Cache lưu trữ kết quả của các yêu cầu truy vấn dữ liệu và cung cấp chúng cho các yêu cầu truy vấn tương tự trong tương lai. Điều này giúp giảm thiểu thời gian truy vấn dữ liệu và tăng tốc độ hoạt động của ứng dụng.

Laravel cung cấp một số loại cache khác nhau như:

Bài viết này được đăng tại [free tuts .net]

  • File Cache: Dữ liệu được lưu trữ trên ổ đĩa và được quản lý bằng cách sử dụng tên file. File Cache là loại cache đơn giản và phổ biến nhất trong Laravel.
  • Memcached Cache: Dữ liệu được lưu trữ trên bộ nhớ đệm phân tán của Memcached. Memcached là một hệ thống cache phân tán, giúp tăng tốc độ truy xuất dữ liệu bằng cách giữ dữ liệu trong bộ nhớ đệm.
  • Redis Cache: Dữ liệu được lưu trữ trên Redis, một hệ thống cơ sở dữ liệu tạm thời trong bộ nhớ. Redis cung cấp một số tính năng mạnh mẽ như hỗ trợ cho cả cache và bộ đếm.
  • Database Cache: Dữ liệu được lưu trữ trên cơ sở dữ liệu, thường là MySQL hoặc PostgreSQL. Đây là loại cache phổ biến trong các ứng dụng có nhiều dữ liệu và có thể được sử dụng để lưu trữ bất kỳ loại dữ liệu nào.
  • Cache đám mây: Lưu trữ cache trên các dịch vụ đám mây như AWS ElastiCache hoặc Google Cloud Memorystore.

Để sử dụng cache trong Laravel, trước tiên bạn cần khai báo driver cho cache và cấu hình driver đó. Sau đó, bạn có thể sử dụng cache thông qua các hàm hỗ trợ trong Laravel như cache(), remember() increment().

Với tính năng Cache trong Laravel, các ứng dụng của bạn sẽ có thể hoạt động nhanh hơn và tiết kiệm tài nguyên hệ thống.

Giới thiệu sơ lược về một số loại Cache

File Cache

File cache trong Laravel là một trong những phương thức lưu trữ cache được hỗ trợ bởi framework. Nó cho phép bạn lưu trữ cache vào file trên đĩa cứng của máy chủ, thường là trong thư mục storage/framework/cache.

Khi sử dụng file cache, Laravel sẽ kiểm tra xem dữ liệu cache có tồn tại trong file hay không. Nếu tồn tại, nó sẽ trả về dữ liệu từ file đó, ngược lại nó sẽ tính toán lại dữ liệu và lưu trữ vào file cache.

Để sử dụng file cache trong Laravel, bạn có thể sử dụng facade Cache và các method được cung cấp như remember(), get(), put(), forever(),... để lưu trữ và truy xuất cache.

Ví dụ:

use Illuminate\Support\Facades\Cache;

// Lưu trữ dữ liệu vào cache trong 5 phút
Cache::put('key', 'value', 5);

// Lấy dữ liệu từ cache freetuts.net
$value = Cache::get('key');

// Lấy dữ liệu từ cache, nếu không tồn tại thì tính toán lại và lưu trữ vào cache trong 10 phút
$value = Cache::remember('key', 10, function () {
    return 'value';
});

// Lưu trữ dữ liệu vào cache vĩnh viễn
Cache::forever('key', 'value');
Bạn cũng có thể sử dụng driver file cache thông qua file cấu hình config/cache.php. Ở đây, bạn có thể thiết lập cấu hình cho file cache, bao gồm thời gian sống, đường dẫn lưu trữ, tên file cache và các thiết lập khác.

Memcached Cache

Memcached là một hệ thống lưu trữ cache dạng key-value được sử dụng để tăng tốc độ truy xuất dữ liệu trong ứng dụng web. Laravel cung cấp hỗ trợ cho Memcached cache trong framework.

Để sử dụng Memcached cache trong Laravel, trước tiên bạn cần cài đặt Memcached trên máy tính của bạn và chạy Memcached server. Sau đó, bạn cần cài đặt gói Memcached cho Laravel bằng Composer:

composer require memcached/memcached

Sau khi cài đặt, bạn cần cấu hình kết nối Memcached trong file config/cache.php:

'memcached' => [
    [
        'host' => env('MEMCACHED_HOST', '127.0.0.1'),
        'port' => env('MEMCACHED_PORT', 11211),
        'weight' => env('MEMCACHED_WEIGHT', 100),
    ],
],

Sau khi cấu hình kết nối Memcached, bạn có thể sử dụng Memcached driver cho hệ thống cache của Laravel bằng cách chỉ định driver là memcached trong file cấu hình config/cache.php.

Bạn có thể sử dụng các phương thức tương tự như sử dụng file cache để lưu trữ và truy xuất cache, sử dụng facade Cache và các method được cung cấp như remember(), get(), put(), forever(),...

Ví dụ:

use Illuminate\Support\Facades\Cache;

// Lưu trữ dữ liệu vào cache trong 5 phút
Cache::put('key', 'value', 5);

// Lấy dữ liệu từ cache
$value = Cache::get('key');freetuts.net

// Lấy dữ liệu từ cache, nếu không tồn tại thì tính toán lại và lưu trữ vào cache trong 10 phút
$value = Cache::remember('key', 10, function () {
    return 'value';
});

// Lưu trữ dữ liệu vào cache vĩnh viễn
Cache::forever('key', 'value');

Lưu ý rằng để sử dụng Memcached cache trong Laravel, bạn cần cài đặt Memcached trên máy tính của bạn và chạy Memcached server. Nếu không, bạn sẽ gặp lỗi khi sử dụng Memcached cache.

Redis Cache

Redis là một hệ thống cơ sở dữ liệu dạng key-value được sử dụng để lưu trữ cache, session và các cấu trúc dữ liệu khác trong ứng dụng web. Laravel hỗ trợ Redis như là một trong các driver cho hệ thống cache và session của nó.

Để sử dụng Redis cache trong Laravel, trước tiên bạn cần cài đặt Redis trên máy tính của bạn và chạy Redis server. Sau đó, bạn cần cài đặt gói Redis cho Laravel bằng Composer:

composer require predis/predis

Sau khi cài đặt, bạn cần cấu hình kết nối Redis trong file config/database.php:

'redis' => [

    'client' => 'predis',

    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),freetuts.net
    ],

],

Sau khi cấu hình kết nối Redis, bạn có thể sử dụng Redis driver cho hệ thống cache của Laravel bằng cách chỉ định driver là redis trong file cấu hình config/cache.php.

Bạn có thể sử dụng các phương thức tương tự như sử dụng file cache để lưu trữ và truy xuất cache, sử dụng facade Cache và các method được cung cấp như remember(), get(), put(), forever(),...

Ví dụ:

use Illuminate\Support\Facades\Cache;

// Lưu trữ dữ liệu vào cache trong 5 phút
Cache::put('key', 'value', 5);

// Lấy dữ liệu từ cache
$value = Cache::get('key');

// Lấy dữ liệu từ cache, nếu không tồn tại thì tính toán lại và lưu trữ vào cache trong 10 phút
$value = Cache::remember('key', 10, function () {
    return 'value';freetuts.net
});

// Lưu trữ dữ liệu vào cache vĩnh viễn
Cache::forever('key', 'value');

Ngoài ra, bạn có thể sử dụng Redis để lưu trữ session trong Laravel bằng cách chỉ định driver là redis trong file cấu hình config/session.php.

Database Cache ( Cache cơ sở dữ liệu)

Database Cache là một loại cache trong Laravel sử dụng cơ sở dữ liệu để lưu trữ các giá trị được cache. Sử dụng Database Cache giúp cho ứng dụng có thể lưu trữ các giá trị cache dưới dạng cơ sở dữ liệu, từ đó có thể truy xuất và quản lý các giá trị này một cách dễ dàng.

Để sử dụng Database Cache trong Laravel, trước tiên bạn cần chạy migration để tạo bảng cache trong cơ sở dữ liệu. Bạn có thể sử dụng artisan command để tạo bảng này:

php artisan cache:table
php artisan migrate

Sau khi đã tạo bảng cache, bạn cần cấu hình kết nối đến cơ sở dữ liệu trong file config/database.php:

'cache' => [
    'driver' => 'database',
    'table' => 'cache',
    'connection' => null,
],

Sau đó, bạn có thể sử dụng Database Cache trong ứng dụng của mình bằng cách sử dụng facade Cache và các method được cung cấp như remember(), get(), put(), forever(),...

Ví dụ:

use Illuminate\Support\Facades\Cache;

// Lưu trữ dữ liệu vào cache trong 5 phút
Cache::put('key', 'value', 5);

// Lấy dữ liệu từ cache
$value = Cache::get('key');

// Lấy dữ liệu từ cache, nếu không tồn tại thì tính toán lại và lưu trữ vào cache trong 10 phút
$value = Cache::remember('key', 10, function () {
    return 'value';freetuts.net
});

// Lưu trữ dữ liệu vào cache vĩnh viễn
Cache::forever('key', 'value');

Khi sử dụng Database Cache, Laravel sẽ tự động lưu trữ các giá trị cache vào cơ sở dữ liệu và truy xuất các giá trị này khi cần thiết. Tuy nhiên, việc lưu trữ và truy xuất dữ liệu từ cơ sở dữ liệu có thể ảnh hưởng đến hiệu suất của ứng dụng của bạn, vì vậy bạn cần cân nhắc kỹ trước khi sử dụng Database Cache trong ứng dụng của mình.

Cloud Cache (Cache đám mây)

Cache đám mây (Cloud Cache) là một dịch vụ cache được cung cấp trên đám mây (cloud) của các nhà cung cấp dịch vụ đám mây như Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, v.v. Dịch vụ này cho phép các ứng dụng web lưu trữ và truy xuất các giá trị cache một cách nhanh chóng và hiệu quả trên đám mây.

Trong Laravel, bạn có thể sử dụng các driver cache như Memcached, Redis, hoặc database cache để lưu trữ và quản lý các giá trị cache trong ứng dụng. Tuy nhiên, nếu bạn muốn sử dụng các dịch vụ cache đám mây, bạn cần cấu hình Laravel để sử dụng driver cache đám mây tương ứng.

Ví dụ, nếu bạn muốn sử dụng Amazon ElastiCache (một dịch vụ cache đám mây được cung cấp bởi AWS), bạn cần cài đặt package aws/aws-sdk-php và cấu hình driver cache của Laravel để sử dụng ElastiCache. Sau đó, bạn có thể sử dụng driver cache này giống như các driver cache khác trong Laravel bằng cách sử dụng facade Cache và các method được cung cấp.

use Illuminate\Support\Facades\Cache;

// Lưu trữ dữ liệu vào ElastiCache trong 5 phút
Cache::store('elastiCache')->put('key', 'value', 5);

// Lấy dữ liệu từ ElastiCache freetuts.net
$value = Cache::store('elastiCache')->get('key');

// Lấy dữ liệu từ ElastiCache, nếu không tồn tại thì tính toán lại và lưu trữ vào ElastiCache trong 10 phút
$value = Cache::store('elastiCache')->remember('key', 10, function () {
    return 'value';
});

// Lưu trữ dữ liệu vào ElastiCache vĩnh viễn
Cache::store('elastiCache')->forever('key', 'value');

Lưu ý rằng việc sử dụng các dịch vụ cache đám mây có thể đòi hỏi một số kỹ năng về quản trị hệ thống và cấu hình mạng, do đó bạn cần phải nắm rõ các khái niệm và thực tiễn để sử dụng các dịch vụ này một cách hiệu quả.

Array Cache

Array Cache là một trong những loại cache được hỗ trợ trong Laravel. Khác với các loại cache khác, Array Cache không sử dụng bất kỳ loại cơ sở dữ liệu hay bộ nhớ cache nào, mà nó chỉ sử dụng một mảng để lưu trữ dữ liệu được cache.

Việc sử dụng Array Cache thường được sử dụng trong các trường hợp đơn giản và không yêu cầu lưu trữ quá nhiều dữ liệu. Với Array Cache, dữ liệu được lưu trữ tạm thời trong bộ nhớ và được lấy ra và sử dụng nhanh chóng.

Để sử dụng Array Cache trong Laravel, ta có thể sử dụng phương thức remember được cung cấp bởi lớp Cache. Ví dụ:

$value = Cache::remember('key', $seconds, function () {
    return 'value';
});

Trong đó:

  • key: Là khóa duy nhất để lưu trữ dữ liệu trong cache.
  • $seconds: Thời gian số giây để lưu trữ dữ liệu trong cache.
  • function () { return 'value'; }: Là hàm để lấy dữ liệu cần lưu trữ trong cache. Nếu dữ liệu chưa được lưu trữ trong cache, nó sẽ được lấy ra từ hàm này và lưu trữ vào cache.

Nếu dữ liệu đã tồn tại trong cache, Laravel sẽ lấy dữ liệu từ cache và trả về giá trị đó. Nếu không, nó sẽ gọi hàm truyền vào để lấy dữ liệu, sau đó lưu trữ dữ liệu đó vào cache và trả về giá trị đó.

Array Cache là một loại cache đơn giản và hiệu quả trong những trường hợp đơn giản và không yêu cầu lưu trữ quá nhiều dữ liệu. Tuy nhiên, với các ứng dụng lớn và có lưu lượng truy cập cao, việc sử dụng các loại cache khác như Redis hay Memcached sẽ hiệu quả hơn.

Một số câu hỏi liên quan về Cache trong Laravel

Để hiểu kĩ hơn về cách dùng của từng loại Cache thì mời bạn theo dõi ở những bài sau về Redis Cache,Memcached Cache,Database Cache

1. Loại Cache nào được sử dụng phổ biến nhất trong Laravel?

Loại Cache được sử dụng phổ biến nhất trong Laravel là Redis Cache. Redis là một hệ thống lưu trữ dữ liệu trên bộ nhớ trong (in-memory data structure store), được sử dụng để lưu trữ Cache, phiên làm việc, hàng đợi, và các dữ liệu tạm thời khác. Redis cung cấp tốc độ truy cập rất nhanh và có khả năng mở rộng tốt, giúp cải thiện hiệu suất ứng dụng.

2. Khi nào nên sử dụng Array Cache trong Laravel?

Array Cache trong Laravel nên được sử dụng khi bạn cần lưu trữ các giá trị tạm thời nhỏ hoặc muốn thực hiện các kiểm tra tồn tại/nhận giá trị nhanh chóng. Nó là loại Cache được lưu trữ trên bộ nhớ RAM của máy tính và chỉ có thể sử dụng được trong một phiên làm việc. Tuy nhiên, do không cần kết nối đến các hệ thống lưu trữ ngoài như các loại Cache khác, Array Cache có tốc độ truy cập rất nhanh.

3. Redis Cache và Memcached Cache khác nhau như thế nào trong Laravel?

  • Redis Cache hỗ trợ nhiều loại dữ liệu và cung cấp nhiều tính năng bổ sung như Pub/Sub, Lua scripting, và pipeline operations. Redis còn có khả năng sao lưu dữ liệu và phục hồi dữ liệu từ các bản sao. Redis cũng có thể lưu trữ dữ liệu trên đĩa, đảm bảo tính toàn vẹn dữ liệu khi tắt máy hoặc khởi động lại.
  • Memcached Cache tập trung vào việc lưu trữ và truy xuất dữ liệu nhanh chóng, đặc biệt là dữ liệu có kích thước lớn. Memcached cũng có khả năng mở rộng tốt và có thể lưu trữ dữ liệu trên nhiều máy chủ khác nhau. Tuy nhiên, Memcached chỉ hỗ trợ lưu trữ các giá trị nhị phân, không hỗ trợ lưu trữ các loại dữ liệu khác.

Kết bài viết

Trong bài viết này, chúng ta đã tìm hiểu về Cache trong Laravel và các loại Cache thường được sử dụng trong Laravel. Việc sử dụng Cache là một cách hiệu quả để tăng tốc độ xử lý của ứng dụng, giảm thiểu số lượng truy vấn đến cơ sở dữ liệu và cải thiện trải nghiệm người dùng.

Laravel hỗ trợ nhiều loại Cache, bao gồm File Cache, Database Cache, Redis Cache, Memcached Cache và Array Cache. Mỗi loại Cache có những đặc điểm riêng, phù hợp với các trường hợp sử dụng khác nhau.

Việc sử dụng Cache trong Laravel là một phần quan trọng trong quá trình phát triển ứng dụng web, đặc biệt là khi ứng dụng của bạn có lưu lượng truy cập lớn và có tần suất truy vấn cơ sở dữ liệu cao. Vì vậy, việc hiểu và sử dụng các loại Cache trong Laravel sẽ giúp cho ứng dụng của bạn hoạt động tốt hơn và cải thiện trải nghiệm người dùng. Ngoài ra các bạn có thể theo dõi ở những bài sau để nắm được rõ kĩ hơn về các loại Cache thường dùng .

Cùng chuyên mục:

Cách sử dụng Relationships trong Laravel

Cách sử dụng Relationships trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách dùng URL Generation trong Larevel

Cách dùng URL Generation trong Larevel

Cách sử dụng Email Verification trong Laravel

Cách sử dụng Email Verification trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Sử dụng Service Container trong Laravel dễ dàng

Sử dụng Service Container trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách dùng Event Sourcing trong Laravel

Cách dùng Event Sourcing trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Real-time web applications là gì ? Tầm quan trọng  trong Laravel

Real-time web applications là gì ? Tầm quan trọng trong Laravel

Cách tạo Database Testing trong Laravel

Cách tạo Database Testing trong Laravel

Top