Laravelキャッシュシステム

3768 ワード

1つのウェブサイトにとってキャッシュシステムは必要なコンポーネントであり、laravelは使いやすいようにlaravelサービスも内部にカプセル化されている.データベースの負荷を軽減し、ページへのアクセス速度を向上させ、システムのパフォーマンスを向上させるのに役立ちます.現在Laravleでサポートされているキャッシュ・ドライバには、ファイル、配列、データベース、APC、Memcached、Redisが含まれています.これらのドライバには、サーバをアップグレードするときにシステム・コードを変更する必要がありません.Laravelのデフォルトのシステムは、config/cache.phpで設定されたファイルサービスキャッシュです.この構成配列の最初の構成defaultは、デフォルトのキャッシュドライバを指定するために使用されます.
'stores' => [
    'apc' => [
        'driver' => 'apc',
    ],
    'array' => [
        'driver' => 'array',
    ],
    'database' => [
        'driver' => 'database',
        'table' => 'cache',
        'connection' => null,
    ],
    'file' => [
        'driver' => 'file',
        'path' => storage_path('framework/cache'),
    ],
    'memcached' => [
        'driver' => 'memcached',
        'servers' => [
            [
                'host' => '127.0.0.1', 
                'port' => 11211, 
                'weight' => 100,
            ],
        ],
    ],
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
    ],
],

ここでapcはAPCキャッシュを表し、APCはPHPの拡張であり、PHP中間コード(opcode)のキャッシュと最適化のために無料、オープンソース、丈夫なフレームワークを提供することを目標としている.詳細については、PHPの公式ドキュメントを参照してください.http://php.net/manual/zh/book.apc.phpAPCキャッシュはMemcachedと同様にメモリベースのキャッシュシステムであり、性能は同等であるが、限定的にはシングルマシンキャッシュにしか使用できず、分散型はサポートされていないが、実際の生産環境はウェブサーバ1台だけではないことが多いため、比較的大規模なウェブサイトではMemcachedを使用することが多い.配列キャッシュドライバ(array)は、テストにのみ使用されることが多く、メリットは永続化されず、PHPスクリプトが1回実行されるライフサイクルでのみ有効になります.ファイルキャッシュドライバ(file)は、ファイルキャッシュがファイルにキャッシュされるため、読み取り時にハードディスクから読み出すため、APCやMemcached、Redisなどのメモリベースのキャッシュシステムに及ばないため、ローカル開発テストにのみ使用されることが多い.データベース・キャッシュ・ドライバ(database)は、キャッシュ・データをデータベースに格納します.使用する前に、キャッシュ・アイテムを格納するためにデータベースに新しいテーブルを作成する必要があります.このテーブル構造は、次のように定義できます.
Schema::create('cache', function($table) {
    $table->string('key')->unique();
    $table->text('value');
    $table->integer('expiration');
});

キャッシュは本来、データベース内のデータを読み出してキャッシュシステムに格納するものであり、データベースキャッシュはある程度システム性能を向上させるが、大規模なシステムにとっては最適ではない.memcachedキャッシュ駆動はMemcachedに基づいており、使用する前にシステムにMemcachedをインストールする必要があります.もちろん、Homestead仮想マシンを使用している場合は、すでにインストールされており、起動が自動的に開始されます.次のコマンドを使用して、その状態と起動ポートを確認できます.
ps -ef | grep memcached

前述したように、Memcachedはメモリベースの分散キャッシュシステムであり、実際の生産環境で広く使用されています.Redisは近年登場したキャッシュシステムであり、文字列、ハッシュ、リスト、集合、秩序化集合など、Memcachedのキー値対よりも多くのデータ構造をサポートしている.そのため、データ構造サーバとも呼ばれ、Redisもメモリベースであるが、ハードディスクに永続化できる.キャッシュシステムのほか、NoSQLデータベース、メッセージキューなどとしても使用できます.要するに、機能が強い.Redisについては後述するので、キャッシュインスタンスというブロックはMemcachedをキャッシュドライバとして、システムのLaravelでキャッシュをどのように使用するかについて説明します.プロファイルから言えば、memcachedプロファイルのdriverは、使用するキャッシュ駆動タイプをmemcachedと指定します.serversは使用するMemcachedをインストールするサーバを表し、hostはホスト名を表し、portはMemcachedが傍受するポート番号を表し、デフォルトは11211であり、weightは重みを表す.多くの場合、私たちは複数のMemcachedサーバを構成し、重みはアクセスの優先度を表す.テストとして、ここではデフォルトの構成を使用します.開始する前に、デフォルトのキャッシュドライバをmemcachedに変更します.
'default' => env('CACHE_DRIVER', 'memcached'),

また、config/cache.phpプロファイルには、キャッシュキーのプレフィックスを構成する最後の構成項目prefixがあり、メモリベースのキャッシュシステムでは、キャッシュ項目が同じホスト上の複数のアプリケーションで使用される可能性があるため、プレフィックスを付けて区別する必要があります.ここではlaravelacademyを接頭辞として使用します.
'prefix' => 'laravelacademy',

通常Cache::rememberは要求を満たす
$value = Cache::remember('users', $minutes, function() { 
          return DB::table('users')->get();
});