Cache缓存
webman/cache symfony/cache üzerinde geliştirilmiş bir önbellek bileşenidir, hem coroutine hem de non-coroutine ortamıyla uyumludur ve bağlantı havuzunu destekler.
注意
当前手册为 webman v2 版本,如果您使用的是webman v1版本,请查看 v1版本手册
Kurulum
composer require -W webman/cache
Örnek
<?php
namespace app\controller;
use support\Request;
use support\Cache;
class UserController
{
public function db(Request $request)
{
$key = 'test_key';
Cache::set($key, rand());
return response(Cache::get($key));
}
}
Konfigürasyon Dosyası Yeri
Konfigürasyon dosyası config/cache.php içinde yer almaktadır, yoksa manuel olarak oluşturulmalıdır.
Konfigürasyon Dosyası İçeriği
<?php
return [
'default' => 'file',
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'default'
],
'array' => [
'driver' => 'array'
],
'apcu' => [
'driver' => 'apcu'
]
]
];
stores.driver 4 farklı sürücüyü destekler, file, redis, array, apcu.
file Dosya Sürücüsü
Bu varsayılan sürücü olup, diğer bileşenlere bağlı değildir, süreçler arası önbellek veri paylaşımını destekler, çoklu sunucu üzerinde önbellek veri paylaşımını desteklemez.
array Bellek Sürücüsü
Bellek depolama, en iyi performansa sahiptir, ancak bellek kullanır, süreçler arası ve çok sunucu üzerinde veri paylaşımını desteklemez, süreç yeniden başlatıldığında geçerliliğini yitirir, genellikle az miktarda önbellek veri tutan projelerde kullanılır.
apcu Bellek Sürücüsü
Bellek depolama, performansı sadece array'dan daha düşüktür, süreçler arası önbellek veri paylaşımını destekler, çoklu sunucu üzerinde veri paylaşımını desteklemez, süreç yeniden başlatıldığında geçerliliğini yitirir, genellikle az miktarda önbellek veri tutan projelerde kullanılır.
APCu 扩展 yüklenmeli ve etkinleştirilmelidir; sık sık önbellek yazma/silme işlemleri yapılan senaryolar için önerilmez, bu durum belirgin performans düşüşüne neden olabilir.
redis Sürücüsü
webman/redis bileşenine dayanır, süreçler arası ve çok sunucu üzerinde veri paylaşımını destekler.
stores.redis.connection
stores.redis.connection, config/redis.php içindeki karşılık gelen key ile ilişkilidir. Redis kullanıldığında, webman/redis yapılandırmasını tekrar kullanır, bunun içinde bağlantı havuzu yapılandırması da bulunmaktadır.
config/redis.php dosyasına bağımsız bir yapılandırma eklenmesi önerilir, örneğin önbellek için aşağıdaki gibi
<?php
return [
'default' => [
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
'cache' => [ // <==== Yeni
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 1,
'prefix' => 'webman_cache-',
]
];
Sonrasında stores.redis.connection değerini cache olarak ayarlayın, config/cache.php sonunda yapılandırma aşağıdaki gibi olmalıdır.
<?php
return [
'default' => 'redis', // <====
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache' // <====
],
'array' => [
'driver' => 'array'
]
]
];
Depoyu Değiştirme
Aşağıdaki kod ile depoyu manuel olarak değiştirebilir ve farklı depolama sürücülerini kullanabilirsiniz, örneğin
Cache::store('redis')->set('key', 'value');
Cache::store('array')->set('key', 'value');
提示
Anahtar adı PSR6 tarafından{}()/\@:karakterlerinin herhangi birini içermesi yasaklanmıştır, ancak bu durum şu anda (symfony/cache7.2.4) PHP ini ayarızend.assertions=-1` ile geçici olarak atlanabilir.
Diğer Cache Bileşenlerini Kullanma
ThinkCache bileşeni için referans Diğer Veritabanları üzerinden bulunmaktadır.