Rumah pangkalan data tutorial mysql Cache Redis dan kaedah ketekalan data MySQL

Cache Redis dan kaedah ketekalan data MySQL

May 29, 2023 pm 08:17 PM
mysql redis

Punca permintaan

Dalam senario perniagaan konkurensi tinggi, pangkalan data dalam kebanyakan kes adalah pautan paling lemah untuk akses pengguna serentak. Oleh itu, anda perlu menggunakan redis untuk melakukan operasi penimbalan supaya permintaan boleh mengakses redis terlebih dahulu dan bukannya mengakses pangkalan data secara terus seperti MySQL.

Senario perniagaan ini terutamanya menyelesaikan masalah membaca data daripada cache Redis Operasi perniagaan secara amnya dijalankan mengikut proses dalam rajah di bawah.

Secara amnya tiada masalah dalam membaca langkah cache, tetapi apabila kemas kini data terlibat: kemas kini pangkalan data dan cache, isu konsistensi data antara cache (Redis) dan pangkalan data (MySQL) terdedah kepada berlaku.

Sama ada anda menulis pangkalan data MySQL dahulu dan kemudian memadam cache Redis atau memadam cache dahulu dan kemudian menulis ke pangkalan data, ketidakkonsistenan data mungkin berlaku; Berikan contoh:

1. Jika cache Redis dipadamkan dan benang lain datang untuk membaca sebelum ia mempunyai masa untuk menulis ke pangkalan data MySQL, dan mendapati bahawa cache kosong, ia membaca data dari pangkalan data dan menulisnya ke cache Pada masa ini , cache mengandungi data kotor.

2. Jika pustaka ditulis dahulu, dan benang menulis pustaka ranap sebelum cache dipadamkan, dan cache tidak dipadamkan, ketidakkonsistenan data juga akan berlaku.

Oleh kerana menulis dan membaca adalah serentak dan susunan tidak dapat dijamin, akan terdapat ketidakselarasan data antara cache dan pangkalan data.

Tathagata menyelesaikannya? Berikut ialah dua penyelesaian, mudah dahulu dan kemudian sukar, dipilih berdasarkan perniagaan dan kos teknikal.

Penyelesaian ketekalan cache dan pangkalan data

1. Pilihan pertama: pakai strategi pemadaman berganda tertunda

Lakukan operasi redis.del (kunci) sebelum dan selepas menulis perpustakaan, dan tetapkan tamat masa yang munasabah.

Kod pseudo adalah seperti berikut

​tulisan kekosongan awam(Kunci rentetan,Data objek){

redis.delKey(key);

​db.updateData(data);

Thread.sleep(500);

redis.delKey(key);

}

2. Langkah-langkah khusus ialah:

​1) Padamkan cache dahulu

​2) Kemudian tulis pangkalan data

3) Tidur selama 500 milisaat

4) Padamkan cache sekali lagi

Jadi, bagaimanakah 500 milisaat ini ditentukan, dan berapa lama ia harus tidur?

Anda perlu menilai logik perniagaan membaca data yang memakan masa projek anda. Tujuannya adalah untuk memastikan permintaan baca tamat, dan permintaan tulis boleh memadamkan data kotor yang dicache yang disebabkan oleh permintaan baca.

Sudah tentu, strategi ini juga perlu mempertimbangkan penyegerakan yang memakan masa antara redis dan master-slave pangkalan data. Masa tidur terakhir untuk menulis data: Tambahkan beberapa ratus milisaat pada masa yang diperlukan untuk membaca logik perniagaan data. Contohnya: tidur selama 1 saat.

3. Tetapkan masa tamat tempoh cache

Secara teorinya, menetapkan masa tamat untuk cache adalah penyelesaian untuk memastikan konsistensi akhirnya. Semua operasi tulis tertakluk kepada pangkalan data Selagi masa tamat cache dicapai, permintaan baca seterusnya secara semula jadi akan membaca nilai baharu daripada pangkalan data dan mengisi semula cache.

4. Kelemahan pelan ini

Menggabungkan strategi pemadaman berganda + tetapan tamat masa cache, senario kes terburuk ialah data tidak konsisten dalam tempoh tamat masa dan ia juga meningkatkan masa menulis permintaan.

2. Penyelesaian kedua: cache kemas kini tak segerak (mekanisme penyegerakan berdasarkan melanggan binlog)

1. Idea teknikal keseluruhan:

Penggunaan langganan tambahan binlog MySQL + baris gilir mesej + kemas kini data tambahan kepada redis

1) Baca Redis: Data panas pada asasnya dalam Redis

2) Menulis MySQL: Penambahan, pemadaman dan pengubahsuaian adalah semua operasi pada MySQL

3) Kemas kini data Redis: binlog operasi data MySQ dikemas kini kepada Redis

​2. Kemas kini Redis

1) Operasi data terutamanya dibahagikan kepada dua blok:

Satu adalah volum penuh (tulis semua data ke redis sekali gus)

Satu adalah tambahan (kemas kini masa nyata)

Apa yang kita bincangkan di sini ialah kenaikan, yang merujuk kepada kemas kini, memasukkan dan memadam data perubahan mysql.

2) Selepas membaca binlog, analisanya dan gunakan baris gilir mesej untuk menolak dan mengemas kini data cache redis setiap stesen.

Dengan cara ini, sebaik sahaja penulisan baru, kemas kini, padam dan operasi lain berlaku dalam MySQL, mesej berkaitan binlog boleh ditolak ke Redis, dan Redis akan mengemas kini Redis berdasarkan rekod dalam binlog.

Malah, mekanisme ini hampir sama dengan mekanisme sandaran tuan-hamba MySQL, kerana sandaran tuan-hamba MySQL juga mencapai konsistensi data melalui binlog.

Di sini anda boleh menggunakan canal (rangka kerja sumber terbuka Alibaba) dalam kombinasi, yang mana anda boleh melanggan binlog MySQL Canal meniru permintaan sandaran pangkalan data hamba mysql, supaya kemas kini data Redis mencapai kesan yang sama.

Sudah tentu, anda juga boleh menggunakan pihak ketiga yang lain untuk alat tolak mesej di sini: kafka, rabbitMQ, dll. untuk menolak kemas kini ke Redis.

Atas ialah kandungan terperinci Cache Redis dan kaedah ketekalan data MySQL. 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
4 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)

Cara Membina Mod Kluster Redis Cara Membina Mod Kluster Redis Apr 10, 2025 pm 10:15 PM

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

Cara melaksanakan redis yang mendasari Cara melaksanakan redis yang mendasari Apr 10, 2025 pm 07:21 PM

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.

Cara Melihat Semua Kekunci di Redis Cara Melihat Semua Kekunci di Redis Apr 10, 2025 pm 07:15 PM

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.

Ringkasan kelemahan phpmyadmin Ringkasan kelemahan phpmyadmin Apr 10, 2025 pm 10:24 PM

Kunci strategi pertahanan keselamatan phpmyadmin adalah: 1. Gunakan versi terkini Phpmyadmin dan kerap mengemas kini PHP dan MySQL; 2. Mengawal hak akses, penggunaan. Htaccess atau kawalan akses pelayan web; 3. Dayakan kata laluan yang kuat dan pengesahan dua faktor; 4. Menyokong pangkalan data secara teratur; 5. Berhati -hati semak fail konfigurasi untuk mengelakkan mendedahkan maklumat sensitif; 6. Gunakan Firewall Aplikasi Web (WAF); 7. Menjalankan audit keselamatan. Langkah-langkah ini secara berkesan dapat mengurangkan risiko keselamatan yang disebabkan oleh phpmyadmin disebabkan oleh konfigurasi yang tidak betul, versi yang lebih lama atau risiko keselamatan alam sekitar, dan memastikan keselamatan pangkalan data.

Panduan untuk penggunaan phpmyadmin komprehensif Panduan untuk penggunaan phpmyadmin komprehensif Apr 10, 2025 pm 10:42 PM

Phpmyadmin bukan sekadar alat pengurusan pangkalan data, ia dapat memberi anda pemahaman yang mendalam tentang MySQL dan meningkatkan kemahiran pengaturcaraan. Fungsi teras termasuk pelaksanaan CRUD dan SQL Query, dan penting untuk memahami prinsip -prinsip penyataan SQL. Petua lanjutan termasuk mengeksport/mengimport data dan pengurusan kebenaran, yang memerlukan pemahaman keselamatan yang mendalam. Isu -isu yang berpotensi termasuk suntikan SQL, dan penyelesaiannya adalah pertanyaan parameter dan sandaran. Pengoptimuman prestasi melibatkan pengoptimuman penyataan SQL dan penggunaan indeks. Amalan terbaik menekankan spesifikasi kod, amalan keselamatan, dan sandaran biasa.

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

Cara menggunakan redis zset Cara menggunakan redis zset Apr 10, 2025 pm 07:27 PM

Redis memerintahkan set (ZSET) digunakan untuk menyimpan elemen yang diperintahkan dan disusun mengikut skor yang berkaitan. Langkah -langkah untuk menggunakan ZSET termasuk: 1. Buat zset; 2. Tambah ahli; 3. Dapatkan skor ahli; 4. Dapatkan kedudukan; 5. Dapatkan ahli dalam julat ranking; 6. Padam ahli; 7. Dapatkan bilangan elemen; 8. Dapatkan bilangan ahli dalam julat skor.

Cara membaca kod sumber redis Cara membaca kod sumber redis Apr 10, 2025 pm 08:27 PM

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.

See all articles