Contoh analisis masalah cache Redis
1. Aplikasi cache Redis
Dalam senario perniagaan sebenar kami, Redis biasanya digunakan bersama dengan pangkalan data lain untuk mengurangkan tekanan pada pangkalan data belakang, seperti pangkalan data hubungan . Digunakan dengan pangkalan data MySQL.
Redis akan cache data yang kerap ditanya dalam MySQL , seperti data hotspot, supaya apabila pengguna datang untuk mengakses, mereka tidak perlu pergi ke MySQL. Daripada bertanya, data cache dalam Redis diperoleh secara langsung, dengan itu mengurangkan tekanan bacaan pada pangkalan data bahagian belakang.
Jika data yang ditanya oleh pengguna tidak tersedia dalam Redis, permintaan pertanyaan pengguna akan dipindahkan ke pangkalan data MySQL Apabila MySQL mengembalikan data kepada klien, data akan dicache dalam Redis pada masa yang sama, supaya apabila pengguna membaca semula, mereka boleh mendapatkan data terus daripada Redis. Carta alir adalah seperti berikut:
2. Penembusan Cache2.1 PengenalanApabila menggunakan Redis sebagai pangkalan data cache, kita pasti akan menghadapi tiga masalah caching biasa
Penembusan Cache
Penembusan Cache
Cache Avalanche
Penembusan Cache bermaksud bahawa apabila pengguna menanyakan data tertentu, data tidak wujud dalam Redis, iaitu, cache tidak melanda Pada masa ini, permintaan pertanyaan akan dialihkan ke pangkalan data lapisan kegigihan MySQL, dan didapati bahawa data itu berlaku. tidak wujud dalam MySQL sama ada, MySQL hanya boleh mengembalikan objek kosong, menunjukkan bahawa pertanyaan itu gagal. Jika terdapat banyak permintaan sedemikian, atau pengguna menggunakan permintaan sedemikian untuk melakukan serangan berniat jahat, ia akan memberi tekanan yang besar pada pangkalan data MySQL dan bahkan runtuh Fenomena ini dipanggil penembusan cache.
Caching objek kosong
Apabila MySQL Bila objek kosong dikembalikan, Redis menyimpan cache objek dan menetapkan masa tamat untuknya. Apabila pengguna memulakan permintaan yang sama sekali lagi, objek kosong akan diperoleh daripada cache Permintaan pengguna disekat dalam lapisan cache, sekali gus melindungi pangkalan data bahagian belakang Terdapat juga beberapa masalah walaupun permintaan tidak boleh memasuki MSQL, strategi ini akan menduduki ruang cache Redis.
Penapis Bloom
Simpan dahulu semua kunci data tempat liputan yang boleh diakses oleh pengguna Dalam Bloom penapis (juga dipanggil pemanasan cache) , apabila pengguna memintanya, ia akan terlebih dahulu melalui penapis Bloom Penapis Bloom akan menentukan sama ada kunci yang diminta wujud . maka permintaan akan ditolak terus, jika tidak, pertanyaan akan terus dilaksanakan, mula-mula pergi ke cache untuk membuat pertanyaan, jika tiada cache, kemudian pergi ke pangkalan data untuk membuat pertanyaan. Berbanding dengan kaedah pertama, menggunakan kaedah penapis Bloom adalah lebih cekap dan praktikal. Rajah proses adalah seperti berikut:
2.3 Perbandingan penyelesaianPemanasan awal cache ialah proses memuatkan data yang berkaitan ke dalam sistem cache Redis terlebih dahulu sebelum sistem bermula. Ini mengelakkan memuatkan data apabila pengguna memintanya.
Kedua-dua penyelesaian boleh menyelesaikan masalah penembusan cache, tetapi senario penggunaannya berbeza:
3. Pecahan cache3.1 PengenalanCache objek kosong: sesuai untuk senario di mana bilangan kunci untuk data kosong adalah terhad dan kebarangkalian permintaan kunci berulang adalah tinggi.
Penapis Bloom: sesuai untuk senario di mana kunci data kosong berbeza dan kebarangkalian permintaan kunci berulang adalah rendah.
3.2 PenyelesaianPecahan cache bermakna data yang ditanya oleh pengguna tidak wujud dalam cache , tetapi ia wujud dalam pangkalan data bahagian belakang Sebab fenomena ini biasanya disebabkan oleh tamat tempoh kunci dalam cache. Sebagai contoh, kunci data panas menerima sejumlah besar akses serentak sepanjang masa Jika kunci tiba-tiba gagal pada masa tertentu, sejumlah besar permintaan serentak akan memasuki pangkalan data bahagian belakang, menyebabkan tekanannya meningkat serta-merta. Fenomena ini dipanggil pecahan cache.
Tukar masa tamat tempoh
Tetapkan data tempat liputan agar tidak tamat tempoh.
Kunci teragih
Gunakan kaedah kunci teragih untuk mereka bentuk semula penggunaan cache Prosesnya adalah seperti berikut:
Kunci: Apabila kami menanyakan data mengikut kunci, kami terlebih dahulu menanyakan cache Jika tidak, kami menguncinya melalui kunci yang diedarkan, dan proses pertama untuk mendapatkan kunci ialah Enter pertanyaan pangkalan data bahagian belakang dan menampan hasil pertanyaan kepada Redis.
Membuka kunci: Apabila proses lain mendapati bahawa kunci diduduki oleh proses tertentu, mereka memasuki keadaan menunggu Selepas membuka kunci, proses lain mengakses kekunci cache mengikut giliran.
3.3 Perbandingan penyelesaian
Tidak pernah luput: Penyelesaian ini tidak menetapkan yang sebenar Bagi masa tamat tempoh, sebenarnya tiada siri bahaya yang disebabkan oleh kekunci panas, tetapi akan terdapat ketidakkonsistenan data, dan kerumitan kod akan meningkat.
Mutex lock: Penyelesaian ini agak mudah, tetapi terdapat bahaya tersembunyi tertentu Jika terdapat masalah dalam proses pembinaan cache atau ia mengambil masa yang lama, mungkin terdapat kebuntuan dan menyekat kolam benang Berisiko, tetapi kaedah ini boleh mengurangkan beban storan bahagian belakang dan mencapai konsistensi yang lebih baik.
4. Cache avalanche
4.1 Pengenalan
Cache avalanche bermakna sejumlah besar kunci dalam cache tamat tempoh pada masa yang sama , dan pada masa ini data Bilangan lawatan adalah sangat besar, yang membawa kepada peningkatan mendadak dalam tekanan pada pangkalan data bahagian belakang dan mungkin menyebabkan ia ranap Fenomena ini dipanggil runtuhan cache. Ia berbeza daripada pecahan cache. Pecahan cache berlaku apabila kunci panas tertentu tiba-tiba tamat tempoh apabila jumlah konkurensi sangat besar, manakala longsoran cache berlaku apabila sejumlah besar kunci tamat tempoh pada masa yang sama, jadi ia bukan susunan yang sama magnitud sama sekali.
4.2 Penyelesaian
Mengendalikan Tamat Tempoh
Dalam untuk mengurangkan kerosakan cache dan masalah runtuhan salji yang disebabkan oleh sejumlah besar kunci tamat tempoh pada masa yang sama, strategi untuk tidak pernah tamat tempoh data hotspot boleh diguna pakai, yang serupa dengan salji cache. Di samping itu, untuk mengelakkan kunci daripada tamat tempoh pada masa yang sama, anda boleh menetapkan masa tamat tempoh rawak untuknya.
redis ketersediaan tinggi
Satu Redis mungkin gagal kerana runtuhan salji, jadi anda boleh menambah beberapa Redis lagi , bina kluster, jika ada yang menutup telefon, yang lain boleh terus bekerja.
Atas ialah kandungan terperinci Contoh analisis masalah cache Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

Cara terbaik untuk memahami kod sumber REDIS adalah dengan langkah demi langkah: Dapatkan akrab dengan asas -asas Redis. Pilih modul atau fungsi tertentu sebagai titik permulaan. Mulakan dengan titik masuk modul atau fungsi dan lihat baris kod mengikut baris. Lihat kod melalui rantaian panggilan fungsi. Berhati -hati dengan struktur data asas yang digunakan oleh REDIS. Kenal pasti algoritma yang digunakan oleh Redis.

Redis menggunakan jadual hash untuk menyimpan data dan menyokong struktur data seperti rentetan, senarai, jadual hash, koleksi dan koleksi yang diperintahkan. Redis berterusan data melalui snapshots (RDB) dan menambah mekanisme tulis sahaja (AOF). Redis menggunakan replikasi master-hamba untuk meningkatkan ketersediaan data. Redis menggunakan gelung acara tunggal untuk mengendalikan sambungan dan arahan untuk memastikan atom dan konsistensi data. Redis menetapkan masa tamat tempoh untuk kunci dan menggunakan mekanisme memadam malas untuk memadamkan kunci tamat tempoh.

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.

Untuk melihat semua kunci di Redis, terdapat tiga cara: Gunakan perintah kunci untuk mengembalikan semua kunci yang sepadan dengan corak yang ditentukan; Gunakan perintah imbasan untuk melangkah ke atas kunci dan kembalikan satu set kunci; Gunakan arahan maklumat untuk mendapatkan jumlah kunci.
