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.