ホームページ >PHPフレームワーク >Laravel >Laravel でクエリ キャッシュを使用する方法を説明する例

Laravel でクエリ キャッシュを使用する方法を説明する例

PHPz
PHPzオリジナル
2023-04-09 10:30:021231ブラウズ

Web アプリケーションの開発に伴い、データの規模は増大し続けており、データベース クエリにますます時間とリソースがかかるようになってきています。各クエリではデータベースから大量のデータを取得する必要があるため、多くのアプリケーションではデータのクエリと表示が遅くなります。

Laravel 開発者として、私たちはクエリ、特にページネーションクエリを最適化する方法という問題によく直面します。 Laravel は、クエリ キャッシュというソリューションを提供します。

クエリ キャッシュを使用すると、同じ条件を複数回クエリしたときに結果をキャッシュできるため、不要なクエリとデータベースの負荷を回避できます。これは、頻繁に大量のデータをクエリする必要がある大規模な Web アプリケーションに特に役立ちます。

Laravel では、クエリのキャッシュはキャッシュ ファサードを通じて実装されます。キャッシュ ファサードは、File、Memcached、Redis などを含むさまざまなキャッシュ ドライバーで使用できます。 Laravel は現在の状況に最適なキャッシュドライバーを自動的に選択します。

Laravel でクエリ キャッシュを使用する方法を示す例を見てみましょう。

まず、モデルでクエリを定義する必要があります。例:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function getPriceRange($minPrice, $maxPrice)
    {
        return $this->whereBetween('price', [$minPrice, $maxPrice])
                    ->orderBy('price', 'desc')
                    ->paginate(10);
    }
}

上の例では、$minPrice と $minPrice の間の価格製品を選択する「getPriceRange」というクエリを定義しました。 $maxPrice。さらに、結果を降順に並べ替え、Laravel のページネーション機能を使用して、結果をページごとに 10 に分割します。

これで、コントローラーでこのクエリを呼び出してキャッシュできるようになり、次回クエリするときにすぐにアクセスできるようになります。これを行うには、キャッシュ ファサードを使用できます。

namespace App\Http\Controllers;

use App\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;

class ProductController extends Controller
{
    public function index(Request $request)
    {
        $minPrice = $request->input('min_price');
        $maxPrice = $request->input('max_price');

        $key = 'price_range_' . $minPrice . '_' . $maxPrice;
        $minutes = 60;

        $products = Cache::remember($key, $minutes, function() use ($minPrice, $maxPrice) {
            return (new Product)->getPriceRange($minPrice, $maxPrice);
        });

        return view('products.index', ['products' => $products]);
    }
}

上記のコードでは、キャッシュ ファサードの「remember」メソッドを使用してクエリ結果をキャッシュします。最初のパラメータはキャッシュ キーとして使用する文字列、2 番目のパラメータは結果をキャッシュする分数、3 番目のパラメータはクエリの結果を返すクロージャです。

これは、同じ価格帯をクエリする別のリクエストがある場合、Laravel はキャッシュから直接結果を返すことを意味します。これにより、アプリケーションのパフォーマンスと速度が大幅に向上します。

クエリ キャッシュは、Laravel の非常に便利な機能です。これを使用すると、不必要なクエリとデータベースの負荷を回避し、アプリケーションのパフォーマンスと速度を向上させることができます。この簡単なトリックをマスターすることで、開発者のキャリアをより簡単で楽しいものにすることができます。

以上がLaravel でクエリ キャッシュを使用する方法を説明する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。