[Laravel] Hướng dẫn sử dụng Cache trong Laravel giúp tăng tốc cho Website của bạn

Đăng bởi: Admin | Lượt xem: 3046 | Chuyên mục: Laravel

Với những website có lượng truy cập lớn hoặc số lượng bản ghi database nhiều thì cpu của server sẽ phải hoạt động rất nhiều để xử lý các truy vấn khi người dùng request tới. Vì vậy việc sử dụng Cache trong Laravel cũng khá quan trọng, nó sẽ cache dữ liệu từ MySQL ra RAM của server giúp tăng tốc request, giảm tải cho CPU. Trong bài viết này vncoder.vn sẽ hướng dẫn các bạn sử dụng Cache trong Laravel, cùng xem và làm theo nhé.


1. Tạo đối tượng bộ nhớ cache

Laravel cung cấp các contract Illuminate\Contracts\Cache\FactoryIlluminate\Contracts\Cache\Repository để truy cập vào các dịch vụ bộ nhớ cache của Laravel. (Contract là một tập hợp các interface thiết lập các dịch vụ được cung cấp bởi Laravel Framework) Contract Factory cho phép bạn truy cập tới tất cả các driver bộ nhớ cache cho ứng dụng của bạn được xác định trong file cấu hình cache của bạn. Tuy nhiên bạn nên sử dụng facade cache để có thể truy cập thuận tiện và dễ dàng hơn tới các contract bộ nhớ cache được Laravel sử dụng. (Facade là cách để Laravel sử dụng các chức năng được cung cấp từ các class được sử dụng thông qua các service provider) Ví dụ cách import facade cache vào trong UsersController:

use Cache;
class UsersController extends Controller
{
    public function index()
    {
        $value = Cache::get(\'key\');
    }
}

2. Lấy dữ liệu từ trong bộ nhớ cache

Phương thức get trong facade cache trong laravel 5 được sử dụng để lấy dữ liệu từ bộ nhớ cache. Nếu dữ liệu được yêu cầu không có trong bộ nhớ cache thì phương thức sẽ trả về giá trị null. Nếu muốn, bạn có thể đưa vào một tham số thứ hai tới phương thức get để xác định giá trị mặc định sẽ trả về trong trường hợp dữ liệu được yêu cầu không tồn tại:

$value = Cache::get(\'key\');

 $value = Cache::get(\'key\',\'default\');

Trong một số trường hợp bạn muốn lấy một dữ liệu từ trong bộ nhớ cache tuy nhiên nếu dữ liệu đó không có thì bạn sẽ lưu một giá trị mặc định vào. Chẳng hạn như nếu bạn muốn lấy thông tin tất cả người dùng từ bộ nhớ cache tuy nhiên nếu không có thì bạn sẽ lấy thông tin đó từ cơ sở dữ liệu và thêm nó vào bộ nhớ cache. Để làm được việc đó bạn sẽ sử dụng phương thức Cache::remember như sau:

$minutes = 60;//Thời gian hết hạn
       
 $value = Cache::remember(\'users\',$minutes,function(){
      return DB::table(\'users\')->get();
 });

Nếu bạn muốn lấy dữ liệu từ bộ nhớ cache sau đó xóa nó đi thì bạn có thể sử dụng phương thức pull. Cũng giống như phương thức get, giá trị null sẽ được trả về trong phương thức pull nếu dữ liệu không tồn tại trong bộ nhớ cache:

 $value = Cache::pull(\'key\');

3. Kiểm tra việc tồn tại của dữ liệu trong bộ nhớ cache

Để kiểm tra việc tồn tại của dữ liệu trong bộ nhớ cache bạn có thể sử dụng phương thức has như sau:

 if(Cache::has(\'key\'))
 {
   //Code nếu có giá trị trong bộ nhớ cache 
 }

4. Tăng và giảm các giá trị đối với các dữ liệu kiểu Integer

Để tăng hay giảm giá trị của các dữ liệu kiểu interger trong bộ nhớ cache bạn có thể dùng phương thức incrementdecrement. Mặc định giá trị được tăng/giảm là 1 tuy nhiên bạn có thể đưa vào một tham số thứ 2 để xác định số giá trị được tăng hay giảm với giá trị của dữ liệu:

$amount = 5; //Số giá trị muốn tăng / giảm
 Cache::increment(\'key\');
 Cache::increment(\'key\',$amount);
 
 Cache::decrement(\'key\');
 Cache::decrement(\'key\',$amount);

5. Lưu trữ dữ liệu vào bộ nhớ cache

Để lưu dữ liệu vào bộ nhớ cache thì bạn có thể sử dụng phương thức put trong façade cache. Khi thêm dữ liệu mới vào bộ nhớ cache thì bạn cần phải xác định thời gian (theo số phút) mà giá trị dữ liệu đó hết hiệu lực:

 $minutes = 60;//Thời gian hết hạn
 Cache::put(\'key\',\'value\',$minutes);

Ngoài ra, thay vì việc xác định số phút thì bạn có thể truyền vào một giá trị PHP Datetime để xác định thời gian hết hiệu lực của dữ liệu ví dụ như sau:

 $expiresAt = Carbon::now()->addDays(7); //Đặt thời gian hết hạn sau 1 tuần
 Cache::put(\'key\',\'value\',$expiresAt);

Laravel còn cung cấp một phương thức khác để chỉ thêm dữ liệu vào trong bộ nhớ cache trong trường hợp nó chưa xuất hiện trong bộ nhớ cache đó là phương thức add. Phương thức add sẽ trả về giá trị true nếu thêm thành công dữ liệu vào bộ nhớ cache còn không sẽ trả về false:

Cache::add(\'key\',\'value\',$minutes);

Để lưu trữ một giá trị trong bộ nhớ cache vĩnh viễn thì bạn có thể sử dụng phương thức forever:

Cache::forever(\'key\',\'value\');

Để xóa một dữ liệu trong bộ nhớ cache thì bạn có thể sử dụng phương thức forget trong facade cache như sau:

Cache::forget(\'key\');

Còn nếu bạn muốn xóa toàn bộ tất cả các dữ liệu trong bộ nhớ cache thì bạn có thể sử dụng phương thức flush:

Cache::flush();

Kết luận

Trong bài viết này vncoder.vn đã giới thiệu cho các bạn về bộ nhớ cache và các phương thức được sử dụng trong bộ nhớ cache. Hy vọng các bạn có thể áp dụng vào dự án của mình, chúc các bạn thành công!

Xem thêm

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Laravel

Xây dựng ứng dụng với Laravel và Vuejs
Số bài học:
Lượt xem: 15880
Đăng bởi: Admin
Chuyên mục: Laravel

Học lập trình Laravel
Số bài học:
Lượt xem: 22871
Đăng bởi: Admin
Chuyên mục: Laravel