Rumah > pembangunan bahagian belakang > tutorial php > Strategi Caching Redis Terbaik dalam Laravel: Panduan untuk Caching Pantas dan Cekap

Strategi Caching Redis Terbaik dalam Laravel: Panduan untuk Caching Pantas dan Cekap

DDD
Lepaskan: 2024-11-12 09:29:02
asal
646 orang telah melayarinya

Best Redis Caching Strategy in Laravel: A Guide to Fast and Efficient Caching

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:

  • Boleh menyimpan dan mendapatkan semula data dengan cepat
  • Menyokong pelbagai struktur data seperti rentetan, senarai dan cincang
  • Menawarkan alatan untuk mengurus tamat tempoh cache dan mengosongkan data lama

Mari kita terokai cara terbaik menggunakan cache Redis dalam Laravel.
Katakan kita mempunyai Tapak Kertas Berita. Sekarang kita perlu membina Api untuk Mendapatkan Berita.

1. Menyediakan Caching Asas dengan Laravel dan Redis

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();
});
Salin selepas log masuk
Salin selepas log masuk

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.

2. Menstrukturkan Kekunci Cache dan Masa Tamat

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";
Salin selepas log masuk
Salin selepas log masuk

Kunci ini jelas, unik dan deskriptif sendiri, menjadikannya mudah untuk mengenal pasti dan mengurus dalam Redis.

3. Menggunakan Teg untuk Pengurusan Cache Berkumpulan

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);
});
Salin selepas log masuk

Sekarang, jika kami ingin mengosongkan semua cache berita khusus kategori (apabila berita dikemas kini), kami boleh menggunakan:

Cache::tags(['news', 'category'])->flush();
Salin selepas log masuk
  1. Caching Data Bernombor dan Ditapis Apabila menambah penomboran atau penapis (seperti kategori atau teg), jadikan setiap kunci cache unik kepada parameter:
$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);
});
Salin selepas log masuk

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();
});
Salin selepas log masuk
Salin selepas log masuk

Ini memastikan setiap kategori dan gabungan halaman mempunyai entri cache sendiri.

5. Pembatalan Cache Automatik pada Perubahan Data

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";
Salin selepas log masuk
Salin selepas log masuk

Sekarang, apabila berita ditambah atau dikemas kini, semua berita dan cache teg penomboran akan disiram, memastikan data sentiasa segar.

6. Ringkasan dan Amalan Terbaik

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan