Laravel dan Redis ialah gabungan hebat untuk meningkatkan kelajuan dan prestasi aplikasi. Redis, stor nilai kunci dalam memori, sesuai untuk caching, terutamanya apabila anda memerlukan akses data yang cepat dan kerap. Dalam panduan ini, kita akan melihat strategi caching yang berkesan dalam Laravel dengan Redis. Kami akan membincangkan cara cache data, mengurus masa tamat tempoh dan mengosongkan cache dengan cekap.
Mengapa Menggunakan Caching Redis?
Apabila anda membuat cache dengan Redis dalam Laravel, anda pada asasnya menyimpan data buat sementara waktu untuk mengurangkan masa yang dihabiskan untuk menanyakan pangkalan data. Caching mempercepatkan pengambilan data, mengurangkan beban pelayan dan meningkatkan pengalaman pengguna dengan membuat halaman dimuatkan dengan lebih pantas.
Redis sesuai untuk caching kerana ia:
Mari kita terokai cara terbaik menggunakan cache Redis dalam Laravel.
Katakan kita mempunyai Tapak Kertas Berita. Sekarang kita perlu membina Api untuk Mendapatkan Berita.
Untuk bermula, mari kita cache respons API yang mudah, seperti senarai artikel berita terkini.
$data = Cache::remember('latest_news', 3600, function () { return News::latest()->get(); });
Dalam contoh ini:
Cache:: remember menyimpan data dengan kunci (berita_terbaru) dan masa untuk hidup (TTL) selama 3600 saat (1 jam).
Jika permintaan untuk latest_news datang semula dalam masa sejam, Redis menyediakan data cache tanpa menanyakan pangkalan data.
Untuk memastikan data segar tanpa membebankan Redis:
Tetapkan TTL yang lebih pendek untuk data yang kerap dikemas kini (mis., 15–30 minit).
Gunakan TTL yang lebih panjang (cth., 1–2 jam) untuk data yang jarang berubah.
Gunakan kunci cache berstruktur khusus yang mencerminkan kandungan data. Contohnya:
$cacheKey = "news:category:category_1";
Kunci ini jelas, unik dan deskriptif sendiri, menjadikannya mudah untuk mengenal pasti dan mengurus dalam Redis.
Redis menyokong teg, yang membolehkan kami mengurus data terkumpul di bawah teg biasa. Contohnya, menandakan semua cache berkaitan berita dengan berita:
Cache::tags(['news', 'category'])->remember('category_news_1', 3600, function () { return $this->news_repository->getNewsByCategory(1); });
Sekarang, jika kami ingin mengosongkan semua cache berita khusus kategori (apabila berita dikemas kini), kami boleh menggunakan:
Cache::tags(['news', 'category'])->flush();
$page = request()->input('page', 1); $limit = request()->input('limit', 10); $cacheKey = "news:page_{$page}:limit_{$limit}"; $newsData = Cache::remember($cacheKey, 3600, function () use ($page, $limit) { return News::latest()->paginate($limit, ['*'], 'page', $page); });
Dengan cara ini:
Entri cache unik dibuat untuk setiap halaman dan had.
Pengguna boleh mengambil halaman dengan cepat tanpa menyoal semula pangkalan data.
Untuk data yang ditapis, masukkan parameter penapis dalam kekunci:
$data = Cache::remember('latest_news', 3600, function () { return News::latest()->get(); });
Ini memastikan setiap kategori dan gabungan halaman mempunyai entri cache sendiri.
Mengosongkan atau "menyahsahkan" cache memastikan pengguna melihat data yang dikemas kini apabila perlu. Begini cara mengautomasikannya:
Gunakan pemerhati model untuk acara seperti dibuat, dikemas kini atau dipadamkan untuk mengosongkan cache yang berkaitan.
Contoh pemerhati untuk berita:
$cacheKey = "news:category:category_1";
Sekarang, apabila berita ditambah atau dikemas kini, semua berita dan cache teg penomboran akan disiram, memastikan data sentiasa segar.
Untuk membuat caching berfungsi dengan berkesan:
Kekunci Unik: Kekunci struktur dengan parameter seperti kategori, halaman dan had.
Teg untuk Data Dikumpulkan: Gunakan teg untuk mengurus cache dengan mudah untuk kumpulan data tertentu.
Automatikkan Ketidaksahihan: Sediakan pemerhati untuk mengosongkan cache lapuk pada perubahan data.
Tetapkan Tamat Tempoh Sensible: Pilih TTL berdasarkan kekerapan data berubah, biasanya antara 15 minit dan 1 jam.
Menggunakan Redis dengan pendekatan berstruktur ini menjadikan API Laravel bertindak balas dengan lebih pantas, menambah baik pengurusan beban pelayan dan memastikan strategi cache yang boleh dipercayai dan cekap serta mudah diurus.
Atas ialah kandungan terperinci Strategi Caching Redis Terbaik dalam Laravel: Panduan untuk Caching Pantas dan Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!