Jadual Kandungan
1. Kata Pengantar
2 Punca masalah
3. Memproses idea untuk menangani kerosakan
4. Penembusan
5. Avalanche
Rumah pangkalan data Redis Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

Jun 01, 2023 am 10:55 AM
redis

1. Kata Pengantar

Seperti yang kita sedia maklum, salah satu kesesakan komputer ialah IO Untuk menyelesaikan masalah ketidakpadanan antara memori dan kelajuan cakera, cache dicipta untuk memasukkan beberapa data panas ingatan dan gunakannya mengikut keperluan, kurangkan sambungan permintaan ke pangkalan data, dan elakkan pangkalan data daripada digantung. Perlu diingat bahawa sama ada ia pecahan atau penembusan dan runtuhan salji yang dibincangkan kemudian, semuanya adalah di bawah premis konkurensi tinggi, seperti apabila kunci panas tertentu dalam cache gagal.

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

2 Punca masalah

Terdapat dua sebab utama:

  • 1.

  • 2. Kunci dihapuskan dengan penggantian halaman.

Atas sebab pertama, di Redis, Key mempunyai masa tamat jika kunci gagal pada saat tertentu (jika pusat membeli-belah melakukan aktiviti, bermula dari tengah malam), kemudian selepas tengah malam , kunci tertentu akan tamat tempoh Semua permintaan pertanyaan produk akan ditekan ke pangkalan data, menyebabkan pangkalan data runtuh.

Atas sebab kedua, kerana memori terhad, data baharu mesti dicache dan data lama mesti dicache sepanjang masa, jadi dalam strategi penggantian halaman tertentu (ilustrasi algoritma penggantian halaman biasa), data mesti tersingkir , jika tiada siapa mengambil berat tentang produk tertentu sebelum acara itu, ia pasti akan tersingkir.

3. Memproses idea untuk menangani kerosakan

Permintaan pemprosesan biasa adalah seperti yang ditunjukkan dalam rajah:

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

Memandangkan tamat tempoh kunci adalah tidak dapat dielakkan, tinggi Apabila trafik datang ke Redis, mengikut ciri satu benang Redis, ia boleh dianggap bahawa tugasan dilaksanakan secara berurutan dalam baris gilir Apabila permintaan sampai ke Redis dan mendapati bahawa Kunci telah tamat tempoh, operasi dilakukan: menetapkan kunci.

Prosesnya secara kasar seperti berikut:

  • Permintaan sampai ke Redis, dan didapati bahawa Kunci Redis telah tamat tempoh tiada kunci, kembali ke belakang baris gilir dan beratur

  • Tetapkan kunci Ambil perhatian bahawa ia sepatutnya setnx(), bukan set(), kerana urutan lain mungkin telah ditetapkan kunci.

  • Dapatkan kunci, ambil Apabila kunci dicapai, pergi ke pangkalan data untuk mendapatkan semula data dan lepaskan kunci selepas permintaan kembali.

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

Tetapi ia menimbulkan persoalan baharu. Bagaimana jika permintaan untuk mendapatkan data itu tergantung selepas mendapat kunci itu? . Proses lain sedang menunggu kunci Penyelesaiannya ialah:

Tetapkan masa tamat tempoh untuk kunci tersebut mudah untuk mengatakan bahawa kunci digantung, tetapi jika ia adalah kunci Bagaimana dengan tamat masa Iaitu, data tidak diambil dalam masa yang ditetapkan, tetapi kunci tamat tempoh. tetapi ia tidak boleh dipercayai kerana permintaan pertama mungkin tamat masa Jika permintaan berikutnya Ia juga tamat masa Selepas beberapa tamat masa berturut-turut, nilai masa tamat kunci pastinya terlalu besar.

Idea lain ialah memulakan urutan lain dan memantaunya Jika data pengambilan benang tidak ditutup, tangguhkan masa tamat tempoh kunci dengan sewajarnya.

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

4. Penembusan

Sebab utama penembusan adalah kerana banyak permintaan mengakses data yang tidak wujud dalam pangkalan data menjual buku sentiasa diminta untuk menanyakan produk teh, kerana cache Redis digunakan terutamanya untuk menyimpan data panas, data yang tidak wujud dalam pangkalan data tidak boleh dicache secara langsung ke pangkalan data dan mengembalikan hasil pertanyaan "tiada". .

Untuk menangani permintaan seperti ini, penyelesaiannya ialah menambah lapisan penapis pada permintaan akses, seperti penapis Bloom, penapis Bloom dipertingkatkan dan penapis cuckoo.

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

Selain penapis Bloom, anda boleh menambah beberapa semakan parameter Contohnya, id data pangkalan data biasanya bertambah jika anda meminta parameter seperti id = -10, ia pasti akan dipintas, untuk mengelakkan situasi ini, boleh melakukan operasi seperti pengesahan ketulenan pengguna.

5. Avalanche

Avalanche adalah serupa dengan pecahan Perbezaannya ialah pecahan adalah apabila kunci hotspot gagal pada masa tertentu, manakala avalanche adalah apabila sejumlah besar kunci hotspot gagal dalam sesuatu. instant. Terdapat banyak di rangkaian yang menekankan bahawa strategi untuk menyelesaikan runtuhan adalah untuk membuat masa tamat secara rawak selepas titik sifar, pekali ditukar kepada 3%. Jika data lepas digunakan, ia dipanggil data kotor.

Sememangnya tidak, anda juga boleh menyimpan wang f0c; Anda menyimpan 3 juta faedah sehingga hujung tahun, tetapi di sebelah hanya ada 2 juta Ini bukan bergaduh, gurau sahaja~

Idea yang betul ialah anda mesti melihat dahulu Periksa sama ada tamat tempoh kunci berkaitan dengan masa Jika ia tidak berkaitan dengan masa, ia boleh diselesaikan dengan masa tamat tempoh rawak.

Jika ia berkaitan dengan masa, sebagai contoh, bank baru sahaja menyebut perubahan pekali tertentu pada hari tertentu, maka penyelesaian pecah pergantungan yang kuat mesti digunakan untuk mengemas kini semua kunci dengan urutan lalu terlebih dahulu.

Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya

Semasa mengemas kini kekunci tempat liputan di latar belakang, lapisan perniagaan akan menangguhkan permintaan masuk, seperti tidur sebentar selama beberapa milisaat atau saat, untuk menyebarkan tekanan pada yang berikutnya kemas kini kunci tempat liputan.

Atas ialah kandungan terperinci Apa yang menyebabkan runtuhan salji Redis dan cara menyelesaikannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

Bagaimana untuk memulakan pelbagai perkhidmatan di Dockerfile? Bagaimana untuk memulakan pelbagai perkhidmatan di Dockerfile? Apr 01, 2025 pm 02:15 PM

Mengenai penggunaan arahan CMD yang cekap di Dockerfile Banyak pengguna Docker baru menggunakan CMD ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Perbandingan beratur redis dan kestabilan MySQL: Kenapa Redis terdedah kepada kehilangan data? Perbandingan beratur redis dan kestabilan MySQL: Kenapa Redis terdedah kepada kehilangan data? Apr 01, 2025 pm 02:24 PM

Perbandingan beratur redis dan kestabilan MySQL: Kenapa Redis terdedah kepada kehilangan data? Dalam persekitaran pembangunan, menggunakan rangka kerja Php7.2 dan ThinkPHP, kita sering menghadapi pilihan kerjasama ...

Bagaimana dengan berkesan memeriksa kesahihan sambungan Redis dalam projek Laravel6? Bagaimana dengan berkesan memeriksa kesahihan sambungan Redis dalam projek Laravel6? Apr 01, 2025 pm 02:00 PM

Bagaimana untuk menyemak kesahihan sambungan Redis dalam projek Laravel6 adalah masalah biasa, terutamanya apabila projek bergantung kepada Redis untuk pemprosesan perniagaan. Berikut adalah ...

Cara Memohon Rentetan Debian di laman web Cara Memohon Rentetan Debian di laman web Apr 02, 2025 am 08:21 AM

Artikel ini membincangkan cara mengoptimumkan prestasi laman web mengenai sistem Debian. "Debianstrings" bukan istilah standard dan boleh merujuk kepada alat atau teknologi yang digunakan dalam sistem Debian untuk meningkatkan prestasi laman web. Berikut adalah beberapa petua praktikal: 1. Adalah disyorkan untuk menggunakan panel pagoda untuk memudahkan proses pemasangan dan konfigurasi untuk konfigurasi pelayan web dan php persekitaran. Adalah disyorkan untuk memasang nginx1.22.1 sebagai pelayan web, Php8.2 sebagai penterjemah skrip, dan MySQL10.7.3-Mariadb sebagai sistem pangkalan data. Pastikan untuk membolehkan sambungan PHP yang diperlukan, seperti FileInfo, Opcache, Memcached, Red

See all articles