sql >> データベース >  >> NoSQL >> Redis

Laravelキャッシングを理解する:キャッシュファサードとRedis

    共通:

    それらはすべてのキャッシュです 。

    これらはすべて、時間コストの削減に使用されます。 。

    相違点:

    構成とルート:

    アプリケーションに属しています 。これをアプリケーションキャッシュと呼びます 。

    php artisan config:cache
    php artisan route:cache
    

    これらの2つのコマンドは、ルートと構成のキャッシュです。

    パス:

    それらは常にbootstrap/cache/に保存されます

    実行中

    php artisan config:clear
    php artisan route:clear
    

    bootstrap/cache/内のディレクトリとファイルのみをクリアします 。

    それらは静的です 。したがって、変更した場合にのみ変更されます。

    メリット

    それらを変更する場合は、clearする必要があります およびcache 手動で。

    これらのルートと構成を確認した後。

    Laravelはファイルから構成とルートを再度読み取る必要はありません IOの時間コストがかかりました。

    ファイルシステムキャッシュとRedisキャッシュ:

    ファイルシステムキャッシュとRedisキャッシュはどちらもキャッシュです。

    ただし、別のドライバーを使用します データを保存するということは、キャッシュデータを保存する場所を意味します 。

    ファイルシステムパス:ファイルシステムドライバーを使用している場合。それらはstorage/framework/cache/に保存されます

    Reids PATH:データはredisに保存されます キー値による。

    いつ使用しますか?

    データを取得するためにこのコードに多くのリクエストがあることに気付いたとき。そして、これらのデータはそれほど速く変更されません。

    キャッシュを使用してそれらを保存し、次にこのapi.itへの別のリクエストが、以下のようにキャッシュからデータを取得することができます。

    $posts = Cache::remember('index.posts', 30, function()
    {return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
    

    最初のリクエストは、データベースから投稿のデータを取得し、これらのデータを30秒後に期限切れになったキャッシュ(Re​​idsまたはFilesystem)に保存します。

    次のリクエストは、キャッシュを介してのみ投稿のデータを取得します。データベースを再度検索する必要はありません。

    そしてこれ:

    use Illuminate\Support\Facades\Redis; 
    
    Route::get('/', function () { 
         $visits = Redis::incr('visits'); 
         return $visits; 
    });
    

    人々がlocalhost:8000/をリクエストするときの意味 、redisでユーザーの訪問数が増加 (データベースに保存する必要はありません。時間がかかります)、次回、訪問数の検索をリクエストすると、redisに表示されます。 非常に迅速に。

    PS:ここではRedis Facadeを使用すると、データはredisに保存されます 。

    キャッシュドライバーとしてredisを使用している場合は、Cache::remember() データもredisに保存されます。

    ただし、Redisファサードを使用すると、多くのRedisメソッドを使用できます。

    どちらが良いですか?

    redisだと思います filesystemよりも優れています 。

    1. redis データをメモリに保存し、ファイルシステムをディスクに保存します。メモリからのデータの読み取りは高速 ディスクより。

    2. 操作 Redisのデータは簡単です ファイルシステムより。たとえば、Redisは特定のタグのすべてのキャッシュをクリアすることをサポートしていますが、ファイルシステムは[ファイルシステムが暗号化されたキーの名前でキャッシュデータを保存するため]できません。

    3. 分散の場合 サーバー、ファイルシステムキャッシュは悪い考えです。キャッシュヒット率が低くなります。

    正直なところ、mongodbのように、他のドライバーを選択することもできます。 。

    ちなみに、私の英語はあまり上手ではありません。ご理解いただければ幸いです。




    1. MongoDBマングース非推奨の警告

    2. MongoDB $ filter

    3. Gorillaセッションのカスタムバックエンドを使用する利点は何ですか?

    4. node.jsでmongodbに接続(および認証)するにはどうすればよいですか?