Cache Redis dan kaedah ketekalan data MySQL
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!

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

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 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.

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.

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.

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".

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 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.
