Rumah > pangkalan data > tutorial mysql > Bagaimana untuk memastikan konsistensi dua tulis antara mysql dan redis

Bagaimana untuk memastikan konsistensi dua tulis antara mysql dan redis

王林
Lepaskan: 2023-05-28 18:16:23
ke hadapan
1205 orang telah melayarinya

1. Senario:

Ketekalan tulis dua kali bermakna selepas kami mengemas kini data dalam pangkalan data, data dalam redis juga mesti dikemas kini secara serentak. Proses membaca data menggunakan redis Apabila pengguna mengakses data, data akan dibaca daripada cache terlebih dahulu cache, pangkalan data akan disoal dahulu Simpan data yang ditanya ke cache dan kemudian mengembalikannya kepada pengguna.

Bagaimana untuk memastikan konsistensi dua tulis antara mysql dan redis

2 Strategi untuk memastikan konsistensi dua kali

1 Kemas kini cache dahulu, kemudian kemas kini pangkalan data

2 pangkalan data dahulu , kemudian kemas kini cache

3 Padam cache dahulu, kemudian kemas kini pangkalan data

4 Kemas kini pangkalan data dahulu, kemudian padamkan cache

3. Kebaikan dan keburukan empat strategi

1 Kemas kini cache dahulu, kemudian kemas kini pangkalan data

Masalahnya adalah jelas kemas kini pangkalan data gagal, data kotor dalam cache akan disebabkan

2 Kemas kini pangkalan data dahulu, kemudian kemas kini cache

Jika konkurensi tinggi, situasi berikut. mungkin wujud. Thread A mengemas kini pangkalan data Jika disebabkan oleh rangkaian atau sebab lain, Thread A tidak mempunyai masa untuk mengemas kini cache Pada masa ini, proses B mengemas kini pangkalan data dan hanya memproses A cache. Pada masa ini, kemas kini thread B pada cache akan hilang, seperti kehilangan transaksi

3 Padam cache dahulu, kemudian kemas kini pangkalan data

Ini strategi mungkin telah mengelakkan kehilangan cache dalam strategi 2, tetapi di bawah keadaan konkurensi yang tinggi, terdapat juga ketidakkonsistenan Contohnya, apabila thread A melakukan operasi tulis, ia mula-mula memadam cache dan kemudian bersedia untuk berkomunikasi dengan pangkalan data baharu kali ini, utas B melakukan operasi tulis tanpa menekan cache, dan kemudian menanyakan pangkalan data Pada masa ini, nilai lama dibaca , dan menyimpan nilai lama yang ditanya ke cache Kemudian kali ini, pangkalan data dan cache tidak konsisten lagi Penyelesaian: Kami hanya perlu menyusun semula A. Selepas melengkapkan kemas kini pangkalan data, Menangguhkan dan kemudian memadam cache juga dipanggil pemadaman berganda tertunda. Masa kelewatan di sini mestilah lebih besar daripada masa operasi membaca perniagaan.

4 Kemas kini pangkalan data dahulu, kemudian padamkan cache

Tidak kira betapa tingginya konkurensi, akan ada ketidakkonsistenan, seperti data bacaan benang A. semasa bersedia untuk menulis ke cache, thread B mengemas kini pangkalan data, dan kemudian melakukan operasi padam cache Pada masa ini, thread A menulis nilai lama ke dalam cache, walaupun kebarangkalian ini berlaku adalah agak rendah, kerana operasi tulis. masa adalah lebih besar daripada masa operasi membaca. Sebagai alternatif, perkataan asal boleh dipermudahkan dan disusun semula: Untuk mengendalikan kegagalan pemadaman, adalah disyorkan untuk menggunakan penyelesaian pemadaman berganda tertunda. Walaupun masih terdapat masalah dengan pemadaman berganda yang tertunda, operasi pemadaman boleh diulang sehingga cache dikosongkan sepenuhnya. Jika pemadaman gagal, kita boleh meletakkan kunci yang perlu dipadamkan ke dalam baris gilir dan cuba memadamnya berulang kali sehingga pemadaman berjaya.

Atas ialah kandungan terperinci Bagaimana untuk memastikan konsistensi dua tulis antara mysql dan redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan