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

Sử dụng Memcache trong Laravel tăng tốc độ truy cập website

Memcache là một trong những công cụ được sử dụng rộng rãi để tăng tốc độ truy xuất dữ liệu trong các ứng dụng web. Trong Laravel, Memcache được tích hợp sẵn để giúp các lập trình viên tối ưu hóa hiệu suất của ứng dụng web của mình.

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.

Tuy nhiên, không phải ai cũng biết cách sử dụng Memcache trong Laravel. Vì vậy, trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu cách sử dụng Memcache trong Laravel một cách dễ dàng và hiệu quả nhất. Chúng ta sẽ đi sâu vào các khái niệm cơ bản về Memcache, cách cài đặt và tích hợp Memcache vào Laravel, và cuối cùng là cách sử dụng Memcache để tối ưu hóa hiệu suất của ứng dụng Laravel của bạn. Hãy bắt đầu!

Memcache trong Laravel là gì ?

install memcache apache png

Memcache là một công cụ caching dữ liệu phổ biến được sử dụng để lưu trữ các giá trị tạm thời trong bộ nhớ cache, giúp tăng tốc độ truy xuất dữ liệu và giảm thời gian phản hồi của ứng dụng web.

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

Trong Laravel, Memcache là một trong những công cụ được tích hợp sẵn, cho phép lưu trữ và truy xuất dữ liệu tạm thời thông qua Memcache server. Với Memcache, Laravel có thể cache các kết quả truy vấn database, tệp tin, đối tượng, và nhiều thứ khác để tối ưu hóa hiệu suất ứng dụng.

Sử dụng Memcache trong Laravel giúp cho việc truy xuất dữ liệu trở nên nhanh hơn, giảm tải cho server và nâng cao trải nghiệm người dùng. Tuy nhiên, để sử dụng Memcache trong Laravel, bạn cần cài đặt và cấu hình Memcache server đúng cách.

Cài đặt Memcache vào Laravel

Để cài đặt và tích hợp Memcache vào Laravel, bạn cần làm theo các bước sau:

Bước 1: Cài đặt Memcached

Trước tiên, bạn cần cài đặt Memcached trên máy chủ của mình. Bạn có thể cài đặt Memcached bằng cách chạy các lệnh sau trên Terminal:

Ubuntu:

sudo apt-get update
sudo apt-get install memcached

CentOS:

sudo yum install memcached

Bước 2: Cài đặt Memcached PHP extension

Sau khi đã cài đặt Memcached, bạn cần cài đặt Memcached PHP extension để Laravel có thể kết nối và sử dụng Memcached. Bạn có thể cài đặt Memcached PHP extension bằng cách chạy các lệnh sau trên Terminal:

Ubuntu:

sudo apt-get install php-memcached
sudo service apache2 restart

CentOS:

sudo yum install php-memcached
sudo service httpd restart

Bước 3: Cấu hình Memcached driver cho Cache và Session trong Laravel

Mở file config/cache.php và thêm đoạn mã sau vào phần 'stores':

'memcached' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT', 11211),
            'weight' => env('MEMCACHED_WEIGHT', 100),
        ],
    ],
],

Mở file config/session.php và thay đổi giá trị của driver thành 'memcached':

'driver' => env('SESSION_DRIVER', 'memcached'),

Bước 4: Cấu hình các biến môi trường

Thêm các biến môi trường sau vào file .env:

MEMCACHED_HOST=127.0.0.1
MEMCACHED_PORT=11211
MEMCACHED_USERNAME=null
MEMCACHED_PASSWORD=null

Bạn có thể thay đổi giá trị của các biến này tùy theo cấu hình của Memcached trên máy chủ của mình.

Sau khi hoàn tất các bước trên, bạn đã cài đặt và cấu hình Memcached driver cho Cache và Session trong Laravel. Bây giờ bạn có thể sử dụng Memcached để lưu trữ và lấy dữ liệu trong Laravel.

Cách sử dụng Memcache trong Laravel

Cache dữ liệu

Để sử dụng Memcache để cache dữ liệu trong Laravel, bạn cần cài đặt Memcache trên server và cài đặt extension Memcached cho PHP. Sau khi cài đặt, bạn có thể sử dụng class Cache của Laravel để lưu trữ và lấy dữ liệu từ Memcache.

Ví dụ:

// Lưu trữ dữ liệu vào cache
Cache::put('key', 'value', $minutes);

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

Trong ví dụ trên, hàm put() của class Cache được sử dụng để lưu trữ giá trị 'value' vào cache với key là 'key' trong $minutes phút. Hàm get() được sử dụng để lấy giá trị từ cache.

Ngoài ra, bạn có thể sử dụng các phương thức khác của class Cache như has(), remember()increment() để thao tác với Memcache.

Ví dụ:

// Kiểm tra key có tồn tại trong cache hay không
if (Cache::has('key')) {
    // Lấy giá trị từ cache
    $value = Cache::get('key');
} else {
    // Tính toán giá trị mới và lưu vào cache
    $value = some_function();
    Cache::put('key', $value, $minutes);
}

// Tạo cache với phương thức remember
$value = Cache::remember('key', $minutes, function () {
    // Tính toán giá trị mới
    return some_function();
});

// Tăng giá trị của key trong cache
Cache::increment('key');

Trong ví dụ trên, phương thức has() được sử dụng để kiểm tra xem key có tồn tại trong cache hay không. Nếu có, giá trị sẽ được lấy từ cache. Nếu không, giá trị mới sẽ được tính toán và lưu vào cache. Phương thức remember() được sử dụng để tạo cache với một closure, nếu key không tồn tại trong cache, closure sẽ được gọi để tính toán giá trị mới và lưu vào cache. Phương thức increment() được sử dụng để tăng giá trị của key trong cache.

Cache kết quả của các query

Caching kết quả của các query là một trong những cách tốt nhất để tối ưu hiệu suất ứng dụng Laravel. Khi bạn cache kết quả của các query, các lần truy vấn tiếp theo đến cùng một dữ liệu sẽ không phải truy cập vào cơ sở dữ liệu mà chỉ cần trả về dữ liệu từ cache, giúp giảm thời gian truy vấn và tăng tốc độ phản hồi của ứng dụng.

Để cache kết quả của các query trong Laravel bằng Memcached, bạn có thể sử dụng phương thức remember() trong model và chỉ định driver của cache là Memcached.

Ví dụ, giả sử bạn có một model Post và muốn cache kết quả của phương thức getLatestPosts():

// VD memcache laravel tại freetuts.net
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;

class Post extends Model
{
    public function getLatestPosts()
    {
        return Cache::remember('latest_posts', 60, function () {
            return $this->orderBy('created_at', 'desc')->take(10)->get();
        });
    }
}

Trong ví dụ trên, chúng ta đã sử dụng phương thức remember() để cache kết quả của query trong 60 phút. Key của cache là 'latest_posts', thời gian cache là 60 phút và function trong tham số cuối cùng được sử dụng để lấy dữ liệu từ database nếu cache không tồn tại.

Khi bạn gọi phương thức getLatestPosts() lần đầu tiên, ứng dụng sẽ truy vấn dữ liệu từ database và lưu kết quả vào Memcached với key là 'latest_posts'. Khi bạn gọi lại phương thức này, ứng dụng sẽ trả về kết quả từ cache thay vì truy vấn dữ liệu từ database.

Bạn có thể chỉnh sửa thời gian cache bằng cách sửa đổi tham số thứ hai của phương thức remember(). Ví dụ, để cache kết quả trong 5 phút, bạn chỉ cần thay đổi giá trị tham số thứ hai của phương thức remember() thành 5:

public function getLatestPosts()
{
    return Cache::remember('latest_posts', 5, function () {
        return $this->orderBy('created_at', 'desc')->take(10)->get();
    });
}

Lưu ý rằng việc sử dụng Memcached để cache kết quả của các query không phải là phương án tối ưu cho mọi trường hợp và bạn nên đánh giá kỹ trước khi áp dụng để đảm bảo rằng việc sử dụng này đáp ứng được yêu cầu của ứng dụng của bạn.

Cache session

Caching session là một trong những cách tối ưu hiệu suất ứng dụng Laravel. Thay vì lưu trữ dữ liệu phiên trong bộ nhớ của server, bạn có thể sử dụng Memcached để lưu trữ dữ liệu phiên và giảm tải cho server.

Bạn có thể sử dụng Memcached để lưu trữ session trong Laravel bằng cách chỉ định driver của session là Memcached trong file config/session.php.

Ví dụ:

return [
    'driver' => env('SESSION_DRIVER', 'memcached'),
    'lifetime' => 120,
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => null,
    'table' => 'sessions',
    'store' => null,
    'lottery' => [2, 100],
    'cookie' => 'laravel_session',
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE', false),
    'http_only' => true,
];

Sau khi đã chỉ định driver của session là Memcached, Laravel sẽ tự động lưu trữ session vào Memcached.

Xóa cache

Để sử dụng Memcached để xóa cache trong Laravel, bạn cần đảm bảo đã cài đặt và cấu hình Memcached trong ứng dụng Laravel của bạn. Sau đó, bạn có thể sử dụng method forget của Facade Cache để xóa cache như sau:

use Illuminate\Support\Facades\Cache;

// xóa cache với key là 'users' sử dụng Memcached
Cache::store('memcached')->forget('users');

Trong đó, store('memcached') sẽ lấy cache driver được cấu hình để sử dụng Memcached.

Ngoài ra, bạn cũng có thể sử dụng method flush để xóa toàn bộ cache:

use Illuminate\Support\Facades\Cache;

// xóa toàn bộ cache sử dụng Memcached
Cache::store('memcached')->flush();

Để xóa cache thông qua command line, bạn có thể sử dụng command php artisan cache:clear hoặc php artisan cache:forget {key} với driver là memcached:

// xóa toàn bộ cache sử dụng Memcached thông qua command line
php artisan cache:clear --driver=memcached

// xóa cache với key là 'users' sử dụng Memcached thông qua command line
php artisan cache:forget users --driver=memcached

Việc sử dụng Memcached để xóa cache trong Laravel giúp tăng tốc độ phản hồi của ứng dụng và giải phóng bộ nhớ, đồng thời cũng cần lưu ý định kỳ xóa cache để tránh ảnh hưởng đến hiệu suất của ứng dụng.

Một số câu hỏi liên quan đến Memcached trong Laravel

1. Memcached và Redis khác nhau như thế nào?

Memcached và Redis đều là các hệ thống caching, nhưng cách thức hoạt động của chúng khác nhau. Memcached chỉ hỗ trợ caching, trong khi Redis cung cấp một số tính năng nâng cao khác như đếm, đăng ký thông báo và phân tán dữ liệu. Redis cũng hỗ trợ các kiểu dữ liệu phức tạp hơn và được sử dụng nhiều hơn trong các ứng dụng đòi hỏi tính toán và đọc/ghi dữ liệu nhiều hơn.

2. Memcached có thể sử dụng được với bộ nhớ trong Laravel không?

Có thể. Memcached có thể được sử dụng với bộ nhớ trong Laravel để lưu trữ và truy xuất cache.

3. Memcached có hỗ trợ đa tầng cache không?

Memcached không hỗ trợ đa tầng cache mặc định, tuy nhiên, Laravel hỗ trợ việc sử dụng Memcached để lưu trữ cache ở cả bộ nhớ và đĩa. Bằng cách sử dụng driver cache đa tầng của Laravel, bạn có thể sử dụng Memcached kết hợp với một driver cache khác (ví dụ như file cache) để lưu trữ cache ở nhiều tầng khác nhau.

4. Memcached có hỗ trợ các tính năng khác ngoài caching không?

Không. Memcached chỉ hỗ trợ việc lưu trữ và truy xuất cache. Nếu bạn muốn sử dụng các tính năng khác như messaging hoặc đếm, Redis có thể là một lựa chọn tốt hơn.

Kết bài viết

Trong bài viết này, chúng tôi đã cung cấp cho bạn một số hướng dẫn về cách sử dụng Memcache trong Laravel để tối ưu hóa hiệu suất ứng dụng của bạn. Chúng tôi đã giải thích cách cài đặt Memcache vào Laravel và các cách sử dụng khác nhau của nó như caching dữ liệu, caching query, caching session và xoá cache.

Memcache là một công cụ hữu ích để cải thiện hiệu suất của ứng dụng Laravel của bạn bằng cách giảm thời gian truy cập cơ sở dữ liệu và tăng tốc độ trả về của ứng dụng. Nó giúp cho việc lưu trữ và truy xuất dữ liệu nhanh hơn, làm cho ứng dụng của bạn chạy nhanh hơn và đáp ứng được các yêu cầu của người dùng một cách nhanh chóng và hiệu quả.

Để sử dụng Memcache trong Laravel, bạn cần cài đặt Memcache trên máy chủ của bạn và sau đó cấu hình Laravel để sử dụng Memcache. Với cách thức sử dụng và cấu hình đơn giản, Memcache là một giải pháp tốt cho việc tăng tốc độ ứng dụng Laravel của bạn.

Hy vọng những hướng dẫn trong bài viết này sẽ giúp bạn tối ưu hóa hiệu suất của ứng dụng Laravel của mình bằng cách sử dụng Memcache.

Top 3 link tham khảo về Memcache trong Laravel

  1. Cách sử dụng Memcache trong Laravel :https://www.startupguys.net/memcache-in-laravel/
  2. Cấu hình Memcache trong Laravel : https://stackoverflow.com/questions/35181488/configure-memcached-in-laravel
  3. Mở rộng ứng dụng Laravel với Memcache : https://devcenter.heroku.com/articles/laravel-memcache

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