Rumah >pangkalan data >Redis >Fahami redis cache avalanche, pecahan cache dan penembusan cache dalam satu artikel
Artikel ini membawa anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan kandungan yang berkaitan tentang runtuhan cache, pecahan cache dan penembusan cache Mari kita lihat bersama-sama Semua orang membantu.
Pembelajaran yang disyorkan: Tutorial video Redis
Mengenai isu frekuensi tinggi Redis, avalanche cache, pecahan cache dan penembusan cache Ia mesti menjadi sangat diperlukan. Saya percaya semua orang telah ditanya soalan yang sama semasa temu bual. Mengapa soalan ini sangat popular? Kerana apabila kami menggunakan cache Redis, masalah ini mudah dihadapi. Seterusnya, mari kita lihat bagaimana masalah ini timbul dan apakah penyelesaian yang sepadan.
Pertama, mari kita lihat cache avalanche Konsep cache avalanche ialah: sejumlah besar permintaan tidak diproses dalam cache Redis, menyebabkan permintaan untuk. banjir ke dalam pangkalan data , dan kemudian tekanan pada pangkalan data meningkat secara mendadak.
Punca runtuhan cache boleh diringkaskan kepada dua sebab:
Mari kita lihat senario pertama: sejumlah besar data dalam cache tamat tempoh pada masa yang sama.
Berdasarkan legenda, ini bermakna sejumlah besar data tamat tempoh pada masa yang sama, dan kemudian terdapat banyak permintaan untuk membaca data. Sudah tentu, runtuhan cache akan berlaku, menyebabkan peningkatan dramatik dalam tekanan pangkalan data.
Untuk menangani masalah sejumlah besar data untuk tamat tempoh pada masa yang sama masa, biasanya terdapat dua penyelesaian:
Selepas melihat situasi di mana sejumlah besar data tamat tempoh pada masa yang sama, mari kita lihat situasi kegagalan contoh cache Redis.
Dalam kes ini, Redis tidak boleh memproses permintaan baca dan permintaan itu secara semula jadi akan dihantar ke pangkalan data.
Secara umumnya, kami mempunyai dua cara untuk menangani situasi ini:
Pemutus litar perkhidmatan, iaitu, apabila Redis gagal, permintaan untuk akses kepada sistem cache digantung. Tunggu sehingga Redis kembali normal sebelum membuka permintaan untuk akses.
Dengan cara ini kita perlu memantau status berjalan Redis atau pangkalan data, seperti tekanan beban MySQL, penggunaan CPU Redis, penggunaan memori dan QPS, dsb. Apabila didapati bahawa cache contoh Redis telah runtuh, perkhidmatan akan digantung.
Keadaan ini boleh meletakkan sejumlah besar permintaan dengan berkesan dan memberi tekanan kepada pangkalan data. Walau bagaimanapun, permintaan akses akan digantung, yang akan memberi kesan yang besar pada akhir perniagaan.
Oleh itu, untuk mengurangkan kesan ke atas perniagaan, kami boleh menggunakan kaedah pengehadan semasa permintaan untuk mengawal QPS dan mengelakkan terlalu banyak permintaan kepada pangkalan data. Sebagai contoh, dalam ilustrasi di bawah, terdapat 20,000 permintaan sesaat, tetapi ia gagal kerana kegagalan Redis. Operasi mengehadkan semasa kami mengurangkan qps kepada 2,000 sesaat, dan pangkalan data masih tiada masalah memproses 2,000 qps.
Pecahan cache bermakna data hotspot individu yang kerap diakses tidak boleh dicache, dan kemudian permintaan dituangkan ke dalam pangkalan data. Ia sering berlaku apabila data hotspot tamat tempoh.
Mengenai masalah pecahan cache, kami tahu bahawa ini adalah data panas yang diakses dengan sangat kerap, jadi kaedah pemprosesan adalah mudah dan kasar, dan masa tamat tempoh tidak ditetapkan secara langsung. Hanya tunggu sehingga data hotspot tidak diakses dengan kerap dan kemudian memprosesnya secara manual.
Cache avalanche adalah sesuatu yang istimewa Ini bermakna bahawa data yang akan diakses tiada dalam cache Redis mahupun dalam pangkalan data. Apabila sejumlah besar permintaan memasuki sistem, Redis dan pangkalan data akan berada di bawah tekanan yang luar biasa.
Biasanya terdapat dua sebab untuk penembusan cache:
Untuk penembusan cache, anda boleh merujuk kepada penyelesaian berikut:
Mata pertama dan ketiga lebih mudah difahami dan tidak akan diterangkan di sini. Mari fokus pada perkara kedua: Penapis Bloom.
Penapis Bloom digunakan terutamanya untuk menentukan sama ada elemen berada dalam set. Ia terdiri daripada vektor binari bersaiz tetap (boleh difahami sebagai tatasusunan bit dengan nilai lalai 0) dan satu siri fungsi pemetaan.
Mari kita lihat dahulu bagaimana penapis Bloom menandakan data a:
Selepas 3 langkah ini, pelabelan data selesai. Kemudian anda perlu menanyakan data apabila ia tidak ada:
Melihat gambar di bawah, prinsip asasnya ialah ini.
Pembelajaran yang disyorkan: Tutorial video Redis
Atas ialah kandungan terperinci Fahami redis cache avalanche, pecahan cache dan penembusan cache dalam satu artikel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!