Cache trong laravel

Một hệ thống có rất nhiều các tác vụ cần xử lý, nếu một trong các tác vụ đó cần nhiều thời gian và lặp lại nhiều lần thì có thể làm hệ thống của chúng ta bị chậm lại. Thông thường dữ liệu đã truy xuất sẽ được lưu vào bộ nhớ cache trong một thời gian để có thể truy xuất nhanh trong các yêu cầu tiếp theo đối với cùng một dữ liệu, các kho lưu trữ thường dùng là Memcached hoặc Redis.

Thật may mắn khi laravel đã cung cấp một api giúp người dùng có thể sử dụng các kho lưu trữ một cách dễ dàng.

Cấu hình

Laravel cung cấp các cấu hình trong file config/cache.php. Trong tệp này, bạn có thể chỉ định trình điều khiển bộ nhớ cache nào bạn muốn được sử dụng theo mặc định trong toàn bộ ứng dụng của mình. Laravel hỗ trợ các chương trình phụ trợ bộ nhớ đệm phổ biến như Memcached , Redis , DynamoDB và cơ sở dữ liệu quan hệ. Ngoài ra, trình điều khiển bộ nhớ cache dựa trên tệp có sẵn, trong khi arrayvà trình điều khiển bộ nhớ cache "null" cung cấp phần phụ trợ bộ nhớ cache thuận tiện cho các bài kiểm tra tự động của bạn.

Lưu ý: Mặc định laravel sẽ sử dụng cấu hình mặc định driver là file

Điều kiện driver

Database

Khi sử dụng databasetrình điều khiển bộ đệm, bạn sẽ cần thiết lập một bảng để chứa các mục bộ đệm. Bạn sẽ tìm thấy một Schemakhai báo ví dụ cho bảng dưới đây:

Schema::create('cache', function ($table) {
$table->string('key')->unique();
$table->text('value');
$table->integer('expiration');
});

Memcached

Sử dụng trình điều khiển Memcached yêu cầu cài đặt gói Memcached PECL . Bạn có thể liệt kê tất cả các máy chủ Memcached của mình trong config/cache.phptệp cấu hình. Tệp này đã chứa một memcached.serversmục để giúp bạn bắt đầu:

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

Nếu cần, bạn có thể đặt hosttùy chọn thành đường dẫn ổ cắm UNIX. Nếu bạn làm điều này, porttùy chọn sẽ được đặt thành 0:

'memcached' => [
[
'host' => '/var/run/memcached/memcached.sock',
'port' => 0,
'weight' => 100
],
],

Redis

Để sử dụng được cache redis bạn phải cài đặt các gói mở rộng của PhpRedis PHP qua PECL hoặc cài đặt predis/predisgói (~ 1.0) qua Composer.

DynamoDB

Trước khi sử dụng trình điều khiển bộ nhớ cache DynamoDB , bạn phải tạo một bảng DynamoDB để lưu trữ tất cả dữ liệu đã lưu trong bộ nhớ cache. Thông thường, bảng này nên được đặt tên cache. Tuy nhiên, bạn nên đặt tên bảng dựa trên giá trị của stores.dynamodb.tablegiá trị cấu hình trong cachetệp cấu hình ứng dụng của bạn .

Bảng này cũng phải có khóa phân vùng chuỗi với tên tương ứng với giá trị của stores.dynamodb.attributes.keymục cấu hình trong cachetệp cấu hình ứng dụng của bạn . Theo mặc định, khóa phân vùng phải được đặt tên key.

Sử dụng bộ nhớ đệm

Lấy dữ liệu trong bộ nhớ

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

Lấy dữ liệu trong store và lưu giá trị

$value = Cache::store('file')->get('foo');

Cache::store('redis')->put('bar', 'baz', 600); // 10 Minutes

Tài liệu tham khảo