


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.
Cache avalanche
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:
- Sebilangan besar data dalam cache tamat tempoh pada masa yang sama, jadi sejumlah besar permintaan dihantar ke pangkalan data pada masa ini.
- Atas cache Redis gagal dan tidak dapat mengendalikan sejumlah besar permintaan, yang juga menyebabkan permintaan pergi ke pangkalan data.
Mari kita lihat senario pertama: sejumlah besar data dalam cache tamat tempoh pada masa yang sama.
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.
Penyelesaian untuk sejumlah besar data tamat tempoh pada masa yang sama
Untuk menangani masalah sejumlah besar data untuk tamat tempoh pada masa yang sama masa, biasanya terdapat dua penyelesaian:
- Tambah masa rawak pada tetapan tamat tempoh data: iaitu, apabila anda menggunakan perintah tamat tempoh untuk menetapkan masa tamat tempoh untuk data, tambah masa rawak. Contohnya, data a tamat tempoh dalam 5 minit dan 10-120 saat ditambah secara rawak pada 5 minit. Ini menghalang sejumlah besar data daripada luput pada masa yang sama.
- Kemerosotan perkhidmatan: iaitu, apabila runtuhan cache berlaku, (1) jika akses bukan data teras, apabila tiada cache hit, pangkalan data tidak akan diakses, dan maklumat pratetap, seperti null nilai atau ralat, akan dikembalikan terus Maklumat (2) Apabila mengakses data teras dan cache terlepas, pertanyaan pangkalan data dibenarkan. Dengan cara ini, semua permintaan yang bukan data teras akan ditolak dan dihantar ke pangkalan data.
Selepas melihat situasi di mana sejumlah besar data tamat tempoh pada masa yang sama, mari kita lihat situasi kegagalan contoh cache Redis.
Cache avalanche yang disebabkan oleh kegagalan instance 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:
- Dalam sistem perniagaan, lakukan dengan baik pemutus litar servis/permintaan pengehadan arus.
- Pencegahan terlebih dahulu: Bina kelompok kebolehpercayaan tinggi Redis, seperti pensuisan kelompok tuan-hamba.
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
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.
Penembusan cache
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:
- Data dipadamkan secara tidak sengaja, menyebabkan tiada data dalam cache dan pangkalan data. Walau bagaimanapun, pelanggan tidak mengetahui perkara ini dan masih meminta dengan panik.
- Terdapat serangan berniat jahat: iaitu seseorang menyasarkan anda untuk menyemak data yang tidak tersedia.
Untuk penembusan cache, anda boleh merujuk kepada penyelesaian berikut:
- adalah untuk menetapkan nilai nol atau nilai lalai untuk nilai cache. Contohnya, apabila penembusan cache berlaku, tetapkan nilai nol/nilai lalai dalam cache Redis. Pertanyaan seterusnya untuk nilai ini akan terus mengembalikan nilai lalai ini.
- Gunakan penapis Bloom untuk menentukan sama ada data wujud dan mengelakkan pertanyaan daripada pangkalan data.
- Lakukan pengesanan permintaan di bahagian hadapan. Contohnya, tapis beberapa permintaan yang menyalahi undang-undang terus di bahagian hadapan dan bukannya menghantarnya ke bahagian belakang untuk diproses.
Mata pertama dan ketiga lebih mudah difahami dan tidak akan diterangkan di sini. Mari fokus pada perkara kedua: Penapis Bloom.
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:
- Dalam langkah pertama, berbilang fungsi pemetaan (fungsi cincang) akan digunakan, setiap Setiap fungsi akan hitung nilai cincangan data ini a;
- Dalam langkah kedua, nilai cincangan yang dikira ini akan menjadi modulo panjang tatasusunan bit, supaya setiap nilai cincang pada tatasusunan diperoleh kedudukan
- Langkah ketiga ialah menetapkan kedudukan yang diperolehi dalam langkah kedua kepada 1 pada tatasusunan bit masing-masing.
Selepas 3 langkah ini, pelabelan data selesai. Kemudian anda perlu menanyakan data apabila ia tidak ada:
- Mula-mula kirakan berbilang kedudukan data ini dalam tatasusunan bit
- Kemudian semak kedudukan tatasusunan bit ini nilai bit. Hanya jika nilai bit setiap kedudukan adalah 1, ia bermakna data mungkin wujud, jika tidak, data mesti tidak wujud.
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!

Ciri -ciri utama Redis termasuk kelajuan, fleksibiliti dan sokongan struktur data yang kaya. 1) Kelajuan: Redis adalah pangkalan data dalam memori, dan membaca dan menulis operasi hampir seketika, sesuai untuk pengurusan cache dan sesi. 2) Fleksibiliti: Menyokong pelbagai struktur data, seperti rentetan, senarai, koleksi, dan lain -lain, yang sesuai untuk pemprosesan data yang kompleks. 3) Sokongan Struktur Data: Menyediakan rentetan, senarai, koleksi, jadual hash, dan lain -lain, yang sesuai untuk keperluan perniagaan yang berbeza.

Fungsi teras Redis adalah sistem penyimpanan dan pemprosesan data berprestasi tinggi. 1) Akses data berkelajuan tinggi: Redis menyimpan data dalam memori dan menyediakan kelajuan membaca dan menulis tahap mikrosecond. 2) Struktur Data Kaya: Menyokong rentetan, senarai, koleksi, dan lain -lain, dan menyesuaikan diri dengan pelbagai senario aplikasi. 3) Kegigihan: Data berterusan ke cakera melalui RDB dan AOF. 4) Menerbitkan langganan: boleh digunakan dalam beratur mesej atau sistem komunikasi masa nyata.

Redis menyokong pelbagai struktur data, termasuk: 1. String, sesuai untuk menyimpan data nilai tunggal; 2. Senarai, sesuai untuk beratur dan susunan; 3. Tetapkan, digunakan untuk menyimpan data yang tidak duplikasi; 4. Diarahkan set, sesuai untuk senarai ranking dan beratur keutamaan; 5. Jadual hash, sesuai untuk menyimpan objek atau data berstruktur.

Kaunter Redis adalah satu mekanisme yang menggunakan penyimpanan pasangan nilai utama REDIS untuk melaksanakan operasi pengiraan, termasuk langkah-langkah berikut: mewujudkan kekunci kaunter, meningkatkan tuduhan, mengurangkan tuduhan, menetapkan semula, dan mendapatkan tuduhan. Kelebihan kaunter Redis termasuk kelajuan cepat, konkurensi tinggi, ketahanan dan kesederhanaan dan kemudahan penggunaan. Ia boleh digunakan dalam senario seperti pengiraan akses pengguna, penjejakan metrik masa nyata, skor permainan dan kedudukan, dan pengiraan pemprosesan pesanan.

Gunakan alat baris perintah redis (redis-cli) untuk mengurus dan mengendalikan redis melalui langkah-langkah berikut: Sambungkan ke pelayan, tentukan alamat dan port. Hantar arahan ke pelayan menggunakan nama arahan dan parameter. Gunakan arahan bantuan untuk melihat maklumat bantuan untuk arahan tertentu. Gunakan perintah berhenti untuk keluar dari alat baris arahan.

Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Penggunaan ZSET dalam Redis Cluster: ZSET adalah koleksi yang diperintahkan yang mengaitkan unsur -unsur dengan skor. Strategi Sharding: a. Hash Sharding: Mengedarkan nilai hash mengikut kunci ZSET. b. Pelbagai Sharding: Bahagikan ke dalam julat mengikut skor elemen, dan tetapkan setiap julat kepada nod yang berbeza. Baca dan tulis operasi: a. Baca Operasi: Jika kekunci ZSET adalah milik nod semasa, ia akan diproses secara tempatan; Jika tidak, ia akan dialihkan ke shard yang sepadan. b. Tulis Operasi: Sentiasa diarahkan ke Shards memegang kekunci ZSET.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular