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 array
và 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.
Điều kiện driver
Database
Khi sử dụng database
trì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 Schema
khai 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.php
tệp cấu hình. Tệp này đã chứa một memcached.servers
mụ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 host
tùy chọn thành đường dẫn ổ cắm UNIX. Nếu bạn làm điều này, port
tù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/predis
gó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.table
giá trị cấu hình trong cache
tệ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.key
mục cấu hình trong cache
tệ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ớ đệmLấy dữ liệu trong bộ nhớ
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