Cacheキャッシュ
webman/cacheは、symfony/cacheを基に開発されたキャッシュコンポーネントで、コルーチン環境と非コルーチン環境の両方に対応し、接続プールをサポートしています。
注意
現在のマニュアルは webman v2 バージョンに基づいています。webman v1 バージョンを使用している場合は、v1バージョンマニュアルをご覧ください。
インストール
composer require -W webman/cacheサンプル
<?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));
    }
}設定ファイルの位置
設定ファイルは config/cache.php にあります。ない場合は手動で作成してください。
設定ファイルの内容
<?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種類のドライバーをサポートしています。file、redis、array、apcu。
file ファイルドライバー
これはデフォルトドライバーであり、他のコンポーネントに依存せず、プロセス間でキャッシュデータを共有することをサポートしていますが、複数サーバー間では共有できません。
array メモリドライバー
メモリストレージで、性能が最も優れていますが、メモリを占有します。プロセス間でのデータ共有や、プロセスの再起動後のデータ保持ができず、一般的にはキャッシュデータ量が少ないプロジェクトで使用されます。
apcu メモリドライバー
メモリストレージで、性能は array に次ぐもので、プロセス間でキャッシュデータを共有することをサポートしていますが、複数サーバー間では共有できません。プロセスの再起動後にデータが失われ、一般的にはキャッシュデータ量が少ないプロジェクトで使用されます。
APCu 拡張をインストールして有効にする必要があります。キャッシュの書き込み/削除が頻繁に行われるシーンには使用しないことを推奨します。パフォーマンスが明らかに低下します。
redis ドライバー
webman/redisコンポーネントに依存しており、プロセス間およびサーバー間でのキャッシュデータの共有をサポートしています。
stores.redis.connection
stores.redis.connection は config/redis.php の対応するキーに対応しています。redis を使用する際には、webman/redis の設定を接続プールの設定を含めて再利用します。
config/redis.php に独立した設定を追加することをお勧めします。以下はキャッシュの例です。
<?php
return [
    'default' => [
        'password' => 'abc123',
        'host' => '127.0.0.1',
        'port' => 6379,
        'database' => 0,
    ],
    'cache' => [ // <==== 新規追加
        'password' => 'abc123',
        'host' => '127.0.0.1',
        'port' => 6379,
        'database' => 1,
        'prefix' => 'webman_cache-',
    ]
];その後、stores.redis.connectionをcacheに設定し、最終的なconfig/cache.phpの設定は以下のようになります。
<?php
return [
    'default' => 'redis', // <====
    'stores' => [
        'file' => [
            'driver' => 'file',
            'path' => runtime_path('cache')
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'cache' // <====
        ],
        'array' => [
            'driver' => 'array'
        ]
    ]
];ストレージの切り替え
以下のコードを使用して手動でストアを切り替え、異なるストレージドライバーを使用できます。
Cache::store('redis')->set('key', 'value');
Cache::store('array')->set('key', 'value');ヒント
Key 名は PSR6 によって制限され、{}()/\@:のいずれかの文字を含むことはできませんが、現時点(symfony/cache7.2.4)では、PHP ini 設定zend.assertions=-1を使用してこのチェックを一時的にバイパスできます。
他のCacheコンポーネントの使用
ThinkCacheコンポーネントの使用については、他のデータベースを参照してください。