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.