cari
Rumahpangkalan dataRedisMari analisa konsistensi cache Redis, penembusan cache, pecahan cache dan isu salji cache bersama-sama

Artikel ini membawa anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan ketekalan cache, penembusan cache, pecahan cache, salji cache dan penyegerakan tulis bagi data cache. Mari kita lihat isu ketekalan DB Saya harap ia akan membantu semua orang.

Mari analisa konsistensi cache Redis, penembusan cache, pecahan cache dan isu salji cache bersama-sama

Cadangan berkaitan: "Analisis masalah storan kunci panas dalam Redis dan bercakap tentang penyelesaian kepada pengecualian cache"

(1) Masalah konsistensi ketidaksahihan cache

Penggunaan cache am ialah: baca cache dahulu, dan jika ia tidak wujud, baca dari DB, dan kemudian Hasilnya ditulis ke cache pada kali berikutnya data dibaca, data boleh diperolehi terus dari cache. [Cadangan berkaitan: Tutorial Video Redis]

Pengubahsuaian data adalah untuk membatalkan data cache secara langsung, dan kemudian mengubah suai kandungan DB untuk mengelakkan pengubahsuaian DB berjaya, tetapi tembolok data tidak dikosongkan kerana rangkaian atau masalah lain , mengakibatkan data kotor. Tetapi ini masih tidak dapat mengelakkan penjanaan data kotor Dalam senario serentak: Anggapkan bahawa perniagaan mempunyai sejumlah besar permintaan baca dan ubah suai untuk data Key:Hello Value:World. Thread A membaca Key:Hello dari OCS, mendapat hasil Not Found, mula meminta data daripada DB, dan mendapat data Key:Hello Value:World seterusnya, ia bersedia untuk menulis data ini ke OCS, tetapi sebelum menulis ke OCS (network , Menunggu CPU boleh menyebabkan kelajuan pemprosesan thread A menjadi perlahan.) Satu lagi thread B meminta untuk mengubah suai data Key:Hello Value:OCS dan mula-mula melakukan tindakan cache penolakan (kerana thread B tidak tahu sama ada data ini wujud , jadi ia secara langsung melakukan operasi tidak sah). OCS berjaya memproses permintaan yang tidak sah. Kembali ke utas A untuk meneruskan menulis OCS dan tulis Key:Hello Value:World ke dalam cache Tugasan Thread A juga berjaya mengubah suai kandungan data DB kepada Key:Hello Value:OCS. Untuk menyelesaikan masalah ini, OCS telah mengembangkan protokol Memcached (awan awam tidak lama lagi akan menyokongnya) dan menambah antara muka deleteAndIncVersion. Antara muka ini sebenarnya tidak memadamkan data, tetapi melabelkan data untuk menunjukkan bahawa ia telah tamat tempoh, dan meningkatkan nombor versi data jika data tidak wujud, NULL ditulis, dan nombor versi data rawak juga dijana. Penulisan OCS menyokong perbandingan atom nombor versi: dengan mengandaikan nombor versi masuk adalah konsisten dengan nombor versi data yang disimpan oleh OCS atau data asal tidak wujud, penulisan dibenarkan, jika tidak pengubahsuaian ditolak.

Kembali ke tempat kejadian sebentar tadi: Thread A membaca Key:Hello daripada OCS, mendapat hasil Not Found, mula meminta data daripada DB dan mendapatkan data Key:Hello Value:World, kemudian bersedia untuk menulis kepada OCS Untuk sekeping data ini, maklumat nombor versi lalai kepada 1 sebelum A menulis kepada OCS, satu lagi thread B memulakan tindakan untuk mengubah suai data Key:Hello Value:OCS pertama kali melakukan tindakan padam cache permintaan deleteAndIncVersion dan menjana versi rawak No. 12345 (bersetuju lebih besar daripada 1000). Kembali ke utas A dan teruskan menulis kepada OCS, meminta untuk menulis Key:Hello Value:World Pada masa ini, sistem cache mendapati bahawa maklumat nombor versi masuk tidak sepadan (1! = 12345), penulisan gagal dan tugas thread A tamat ;Thread B juga berjaya mengubah suai kandungan data DB kepada Key:Hello Value:OCS.

Pada masa ini, data dalam OCS ialah Key:Hello Value:NULL Version:12345; data dalam DB ialah Key:Hello Value:OCS dalam tugasan baca seterusnya, data dalam DB akan dicuba semula untuk menulis dalam OCS.

(2) Isu penyegerakan tulis data cache dan konsistensi DB

Apabila skala tapak web berkembang dan kebolehpercayaan bertambah baik, ia akan menghadapi penggunaan berbilang IDC. Setiap IDC mempunyai sistem DB dan cache bebas, dan ketekalan cache telah menjadi isu yang menonjol.

Pertama sekali, untuk memastikan kecekapan tinggi, sistem cache akan menghalang IO cakera, walaupun ia menulis BINLOG sudah tentu, demi prestasi, sistem cache hanya boleh memadam secara serentak dan tidak tulis secara serentak, jadi penyegerakan cache secara amnya akan diutamakan daripada ketibaan penyegerakan DB (Lagipun, sistem cache jauh lebih cekap), maka akan ada senario di mana tiada data dalam cache dan data lama dalam DB. Pada masa ini, terdapat permintaan perniagaan untuk data, dan cache baca Tidak Ditemui Data lama yang dibaca daripada DB dan dimuatkan ke dalam cache masih merupakan data lama Apabila penyegerakan data DB tiba, hanya DB yang dikemas kini. dan data kotor yang dicache tidak boleh dibersihkan.

Mari analisa konsistensi cache Redis, penembusan cache, pecahan cache dan isu salji cache bersama-sama

Seperti yang dapat dilihat daripada situasi di atas, punca ketidakkonsistenan ialah sistem heterogen tidak boleh menyegerak secara kolaboratif Ia tidak dapat menjamin bahawa data DB disegerakkan terlebih dahulu dan data cache disegerakkan kemudian. Jadi kita perlu mempertimbangkan bagaimana sistem cache menunggu untuk penyegerakan DB, atau bolehkah kedua-duanya berkongsi mekanisme penyegerakan? Penyegerakan cache juga bergantung pada DB BINLOG yang merupakan penyelesaian yang boleh dilaksanakan.

DB dalam IDC1 disegerakkan kepada DB dalam IDC2 melalui BINLOG Dalam kes ini, pengubahsuaian data IDC2-DB juga akan menjana BINLOGnya sendiri Penyegerakan data cache boleh dilakukan melalui IDC2-DB BINLOG. Selepas modul penyegerakan cache menganalisis BINLOG, ia membatalkan kekunci cache yang sepadan dan menukar penyegerakan daripada selari kepada bersiri, memastikan pesanan itu.

(3) Penembusan cache (DB mengalami trafik pertanyaan yang tidak perlu)

Kaedah 1: Ia adalah penapis Bloom. Ia adalah algoritma probabilistik dan struktur data yang sangat cekap ruang, digunakan untuk menentukan sama ada elemen berada dalam set (serupa dengan Hashset). Terasnya ialah vektor binari panjang dan satu siri fungsi cincang. Laksanakan penapis mekar menggunakan jambu batu Google. 1) Terdapat kadar salah pengiraan Apabila bilangan elemen yang disimpan meningkat, kadar salah pengiraan juga meningkat 2) Dalam keadaan biasa, elemen tidak boleh dipadamkan daripada penapis Bloom 3) Proses menentukan panjang tatasusunan dan bilangan fungsi cincang adalah kompleks, dan pengedaran Apakah senario penggunaan penapis Long? 1) Penapisan alamat spam (bilangan alamat adalah besar) 2) Penyahduplikasi alamat URL Crawler 3) Menyelesaikan masalah pecahan cache

Kaedah 2: Simpan hasil kosong dan tetapkan masa untuk hasil kosong

(4) Cache avalanche (cache ditetapkan pada masa tamat tempoh yang sama, menyebabkan puncak banjir DB)

Kaedah 1: Kebanyakan pereka sistem mempertimbangkan untuk menggunakan kunci atau baris gilir untuk memastikan cache tunggal Benang (proses) menulis untuk mengelakkan sebilangan besar permintaan serentak jatuh pada sistem storan asas semasa kegagalan

Kaedah 2: Nilai rawak masa kegagalan

(5) Pecahan cache ( titik panas) Kunci, longsor kecil yang disebabkan oleh sebilangan besar permintaan baca serentak)

Apabila cache tamat tempoh pada masa tertentu, terdapat sejumlah besar serentak permintaan untuk Kunci ini pada masa ini Permintaan ini Jika didapati bahawa cache telah tamat tempoh, data biasanya akan dimuatkan dari DB bahagian belakang dan ditetapkan semula ke cache Pada masa ini, permintaan serentak yang besar boleh mengatasi dengan serta-merta DB hujung belakang

Kaedah 1: 1. Gunakan cache yang diedarkan Untuk menyokong kunci mutex, tetapkan kunci mutex Apabila operasi kembali berjaya, operasi DB muatkan akan dilakukan dan cache akan diset semula. Dengan kata lain, muatkan DB hanya akan diproses oleh satu utas.

Kaedah 2: Gunakan kunci mutex terlebih dahulu: tetapkan nilai tamat masa (masa tamat1) dalam nilai, tamat masa1 adalah lebih kecil daripada tamat masa memcache sebenar (masa tamat2) Apabila tamat masa1 dibaca daripada cache Apabila anda mendapati ia telah tamat tempoh , teruskan masa tamat1 dan tetapkannya semula ke cache Kemudian muatkan data dari pangkalan data dan tetapkannya ke cache Ini meningkatkan pencerobohan kod perniagaan dan meningkatkan kerumitan pengekodan. Tidak pernah tamat tempoh": Dari perspektif redis, memang tiada masa tamat tempoh ditetapkan, yang memastikan tiada masalah tamat tempoh kunci tempat liputan, iaitu, ia tidak tamat tempoh "secara fizikal". Dari perspektif fungsi, jika ia tidak tamat tempoh. tamat tempoh, maka tidak. Adakah ia statik? Jadi kami menyimpan masa tamat tempoh dalam nilai yang sepadan dengan kunci Jika didapati telah tamat tempoh, cache dibina melalui benang tak segerak, iaitu, tamat tempoh "logik". >

(6) Masalah kepenuhan cache dan kehilangan data biasa dalam sistem cache

Perlu berdasarkan analisis perniagaan tertentu Biasanya kami menggunakan strategi LRU untuk mengendalikan limpahan, dan Redis Strategi kegigihan RDB dan AOF untuk memastikan situasi tertentu

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati:

Video Pengaturcaraan

!

Atas ialah kandungan terperinci Mari analisa konsistensi cache Redis, penembusan cache, pecahan cache dan isu salji cache bersama-sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:简书. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Redis: Beyond SQL - Perspektif NoSQLRedis: Beyond SQL - Perspektif NoSQLMay 08, 2025 am 12:25 AM

Redis melampaui pangkalan data SQL kerana prestasi dan fleksibiliti yang tinggi. 1) Redis mencapai bacaan dan tulis kelajuan yang sangat cepat melalui penyimpanan memori. 2) Ia menyokong pelbagai struktur data, seperti senarai dan koleksi, sesuai untuk pemprosesan data yang kompleks. 3) Model tunggal-threaded memudahkan pembangunan, tetapi konkurensi tinggi mungkin menjadi kesesakan.

Redis: perbandingan dengan pelayan pangkalan data tradisionalRedis: perbandingan dengan pelayan pangkalan data tradisionalMay 07, 2025 am 12:09 AM

Redis lebih tinggi daripada pangkalan data tradisional dalam senario latency yang tinggi dan rendah, tetapi tidak sesuai untuk pertanyaan kompleks dan pemprosesan transaksi. 1.Redis menggunakan penyimpanan memori, bacaan cepat dan tulis kelajuan, sesuai untuk kesesuaian tinggi dan keperluan latensi yang rendah. 2. Pangkalan data tradisional didasarkan pada cakera, sokongan pertanyaan kompleks dan pemprosesan transaksi, dan mempunyai konsistensi dan ketekunan data yang kuat. 3. Redis sesuai sebagai suplemen atau pengganti pangkalan data tradisional, tetapi ia perlu dipilih mengikut keperluan perniagaan tertentu.

Redis: Pengenalan kepada kedai data dalam memori yang kuatRedis: Pengenalan kepada kedai data dalam memori yang kuatMay 06, 2025 am 12:08 AM

Redistisahigh-performancein-memorydatastructureStoretheatexcelsinspeedandversatility.1) itsupportsvariousdataStructureslikestrings, senarai, andsets.2) redisisanin-memorydatabasewithpersistenctions.

Adakah Redis terutamanya pangkalan data?Adakah Redis terutamanya pangkalan data?May 05, 2025 am 12:07 AM

Redis terutamanya pangkalan data, tetapi ia lebih daripada sekadar pangkalan data. 1. Sebagai pangkalan data, Redis menyokong kegigihan dan sesuai untuk keperluan berprestasi tinggi. 2. Sebagai cache, Redis meningkatkan kelajuan tindak balas aplikasi. 3. Sebagai broker mesej, REDIS menyokong mod penerbitan-langganan, sesuai untuk komunikasi masa nyata.

Redis: Pangkalan data, pelayan, atau yang lain?Redis: Pangkalan data, pelayan, atau yang lain?May 04, 2025 am 12:08 AM

Redisisamultifacetedtoolthatservesasadatabase, pelayan, andmore.itfunctionsasanin-memorydatastructureStore, menyokongVariousDataStructures, andcanbeusedasacache, MessageBroker, sessionStorage, danFordistributedLocking.

Redis: Membentangkan tujuan dan aplikasi utamaRedis: Membentangkan tujuan dan aplikasi utamaMay 03, 2025 am 12:11 AM

Redisisanopen-Source, In-MenoryDataStructureStoreusedasadatabase, Cache, andMessageBroker, ExcellingInspeedandversatility.Iswidelyededforcaching, Real-Timeanalytics, sessionManagement, danSleaderboardsDuetoitssupportorvariousdatastructures

Redis: Panduan ke kedai data nilai kunciRedis: Panduan ke kedai data nilai kunciMay 02, 2025 am 12:10 AM

REDIS adalah penyimpanan struktur data memori sumber terbuka yang digunakan sebagai pangkalan data, cache dan broker mesej, sesuai untuk senario di mana tindak balas pantas dan kesesuaian tinggi diperlukan. 1.Redis menggunakan memori untuk menyimpan data dan menyediakan mikrosecond membaca dan menulis kelajuan. 2. Ia menyokong pelbagai struktur data, seperti rentetan, senarai, koleksi, dan sebagainya. 3. Redis menyedari kegigihan data melalui mekanisme RDB dan AOF. 4. Gunakan model tunggal dan teknologi multiplexing untuk mengendalikan permintaan dengan cekap. 5. Strategi Pengoptimuman Prestasi termasuk algoritma LRU dan mod kluster.

Redis: caching, pengurusan sesi, dan banyak lagiRedis: caching, pengurusan sesi, dan banyak lagiMay 01, 2025 am 12:03 AM

Fungsi Redis terutamanya termasuk cache, pengurusan sesi dan fungsi lain: 1) Fungsi cache menyimpan data melalui memori untuk meningkatkan kelajuan bacaan, dan sesuai untuk senario akses frekuensi tinggi seperti laman web e-dagang; 2) Fungsi Pengurusan Sesi Saham data sesi dalam sistem yang diedarkan dan secara automatik membersihkannya melalui mekanisme masa tamat; 3) Fungsi lain seperti mod penerbitan-langganan, kunci dan kaunter yang diedarkan, sesuai untuk push mesej masa nyata dan sistem multi-threaded dan senario lain.

See all articles

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.