Artikel ini akan memberi anda pemahaman ringkas tentang penembusan cache, avalanche cache, pecahan cache dan konsistensi cache dalam Redis, dan memperkenalkan penyelesaian untuk penembusan cache dan avalanche cache saya harap ia akan membantu semua orang!
Cache gagal di kawasan yang besar pada masa yang sama, dan permintaan seterusnya akan jatuh pada pangkalan data, menyebabkan pangkalan data tidak dapat untuk menahan sejumlah besar permintaan dalam tempoh masa yang singkat dan runtuh
Sebagai contoh, pada halaman utama e-dagang, masa tamat tempoh utama semua halaman utama ialah 12 jam dan dimuat semula pada 12 tengah hari ialah acara jualan kilat pada 0:00 dan sejumlah besar pengguna masuk, tetapi semua kunci dalam cache tidak sah pada masa itu, semua Permintaan akan jatuh ke pangkalan data Jika pangkalan data tidak dapat mengendalikannya, ia hanya akan ranap. Atau jika redis tidak berfungsi, sejumlah besar permintaan akan jatuh ke mysql, menyebabkan ia ditutup. [Cadangan berkaitan: Tutorial video Redis]
Jadi dalam kes ini, masa tamat tempoh setiap kunci perlu ditambah untuk mengelakkan sebilangan besar kegagalan utama pada masa yang sama Jika ia adalah penempatan kelompok redis, data tempat liputan boleh diedarkan ke perpustakaan yang berbeza.
Sebelumnya: Cuba pastikan ketersediaan gugusan redis yang tinggi, tebus masa mati mesin secepat mungkin dan pilih strategi penyingkiran memori yang sesuai
Sedang berjalan : Had semasa histrix cache ehcache tempatan dan turun taraf untuk mengelakkan ranap mysql
Selepas itu: Data yang disimpan oleh mekanisme kegigihan redis dipulihkan ke cache secepat mungkin .
Sebilangan besar kunci yang diminta tidak wujud dalam cache Contohnya, penggodam mencipta kunci yang tidak wujud dalam cache dan memulakan sejumlah besar permintaan, mengakibatkan sejumlah besar permintaan digugurkan ke pangkalan data.
Pertama sekali, anda harus melakukan pengesahan parameter input asas dan memintas parameter haram secara langsung Contohnya, tanya id pangkalan data tidak boleh kurang daripada 0, sahkan alamat e-mel Format, dsb.
Jika cache mahupun pangkalan data tidak dapat mencari data untuk kunci tertentu, tulis kunci untuk redis, nilainya batal dan tetapkan tamat tempoh masa untuk mengelakkan permintaan seterusnya Fall pada pangkalan data.
Melalui penapis Bloom, penapis Bloom boleh menentukan dengan mudah sama ada data yang diberikan wujud dalam data besar-besaran Semua kemungkinan nilai yang diminta boleh disimpan dalam penapis Bloom, apabila permintaan datang dalam, ia mula-mula menentukan sama ada permintaan yang dihantar oleh pengguna wujud dalam penapis Bloom dan memintasnya secara langsung jika ia tidak wujud.
Pecahan cache merujuk kepada kunci yang sangat panas dan sentiasa membawa konkurensi besar menumpukan pada mengakses titik ini, apabila kunci tamat tempoh , konkurensi besar yang berterusan menembusi cache dan meminta terus ke pangkalan data
Jika konsistensi yang kuat diperlukan, cache tidak boleh digunakan kerana jaminan Tanpa konsistensi yang kukuh, hanya konsistensi akhirnya boleh dijamin.
Jika kemas kini pangkalan data gagal, pangkalan data masih mempunyai data lama, redis kosong dan data tidak akan menjadi tidak konsisten. Membaca kosong akan menyebabkan Pergi ke pangkalan data untuk bertanya dan kemudian mengemas kini ke cache.
Padam cache dahulu, dan kemudian kemas kini pangkalan data Masalah juga mungkin berlaku dalam senario serentak tinggi, seperti memadamkan cache . Pangkalan data belum dikemas kini lagi dan mendapati bahawa redis kosong dan kemudian mengemas kininya kepada redis pada masa ini, dan kemudian pangkalan data akan dikemas kini menyebabkan pangkalan data dan data redis menjadi tidak konsisten Pada masa ini, anda boleh Meletakkan operasi mengemas kini data ke dalam baris gilir, dan operasi bersiri tidak akan berlaku, tetapi ini biasanya tidak disyorkan kerana ia akan mengurangkan kecekapan.
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Pengenalan kepada Pengaturcaraan! !
Atas ialah kandungan terperinci Mari kita bincangkan tentang penembusan cache, runtuhan cache, pecahan cache dan konsistensi cache dalam Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!