国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
1. Empat strategi penyegerakan:
2.1 Kemas kini cache
:
Seperti di atas Gambar menunjukkan masalah yang mungkin berlaku apabila cache dipadamkan dahulu dan kemudian pangkalan data dikemas kini:
Seperti yang ditunjukkan di atas, pangkalan data dikemas kini dahulu dan kemudian cache dipadamkan apabila
. Jika dalam aplikasi sebenar, kita perlu memilih kaedah ini kerana pertimbangan tertentu, adakah cara untuk menyelesaikan masalah ini? Jawapannya ya, iaitu menggunakan strategi pemadaman berganda tertunda
Rumah pangkalan data Redis Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data

Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data

Mar 17, 2022 pm 06:50 PM
redis

Artikel ini membawa anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan cara memastikan ketekalan cache redis dan pangkalan data, termasuk mengemas kini cache dan mengemas kini pangkalan data, dsb. Semoga ia membantu semua orang.

Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data

Pembelajaran yang disyorkan: Tutorial pembelajaran Redis

1. Empat strategi penyegerakan:

Ingin memastikan caching Konsisten dengan penulisan berganda pangkalan data, terdapat 4 cara, iaitu, 4 strategi penyegerakan:

  1. Kemas kini cache dahulu, kemudian kemas kini pangkalan data
  2. Kemas kini pangkalan data dahulu, kemudian kemas kini cache;
  3. Daripada 4 strategi penyegerakan ini, apa yang perlu kita bandingkan ialah:
  4. Kaedah manakah yang lebih sesuai untuk mengemas kini cache atau memadam cache? Perlukah pangkalan data dikendalikan dahulu atau cache dahulu?

2. Kemas kini cache atau padam cache

Seterusnya, mari analisa sama ada kita perlu mengemas kini cache atau memadam cache.

2.1 Kemas kini cache

Kelebihan

:

Cache dikemas kini dalam masa setiap kali data berubah, jadi kehilangan kurang berkemungkinan berlaku semasa pertanyaan.

Kelemahan:

Mengemas kini cache agak mahal. Jika data perlu menjalani pengiraan yang rumit sebelum ditulis ke cache, kemas kini cache yang kerap akan menjejaskan prestasi pelayan. Jika ini adalah senario perniagaan di mana data ditulis dengan kerap, mungkin tiada perniagaan yang membaca data apabila cache kerap dikemas kini.

2.2 Padam cache

Kelebihan

:

Operasi mudah, tidak kira sama ada operasi kemas kini rumit atau tidak, data dalam cache akan menjadi dipadamkan secara langsung.

Kelemahan:

Selepas memadamkan cache, cache pertanyaan seterusnya akan terlepas dan pangkalan data perlu dibaca semula. Daripada perbandingan di atas, secara umum, memadam cache adalah penyelesaian yang lebih baik.

3 Kendalikan pangkalan data atau cache dahulu Seterusnya, mari analisa sama ada pangkalan data atau cache perlu dikendalikan terlebih dahulu.

Mula-mula, kami akan memadam cache dahulu dan mengemas kini pangkalan data terlebih dahulu, dan membuat perbandingan di

:

3.1 Padam cache dahulu dan kemudian kemas kini pangkalan data
出現(xiàn)失敗

Seperti di atas Gambar menunjukkan masalah yang mungkin berlaku apabila cache dipadamkan dahulu dan kemudian pangkalan data dikemas kini:

Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan dataThread A berjaya memadamkan cache, tetapi thread A gagal mengemas kini pangkalan data;

Thread B memadamkan cache daripada cache Baca data daripada cache kerana cache dipadamkan, proses B tidak boleh mendapatkan data daripada cache, dan kemudian membaca data daripada pangkalan data; , kemas kini data dalam pangkalan data gagal, dan benang B berjaya memperoleh data lama daripada pangkalan data, dan kemudian mengemas kini data ke cache.
  • Akhirnya, data cache dan pangkalan data adalah konsisten, tetapi ia masih data lama
  • 3.2 Kemas kini pangkalan data dahulu dan kemudian padamkan cache

Seperti yang ditunjukkan di atas, pangkalan data dikemas kini dahulu dan kemudian cache dipadamkan apabila

ialah:

Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data
Thread A berjaya mengemas kini pangkalan data. , tetapi utas A gagal memadamkan cache;出現(xiàn)失敗

Benang B berjaya membaca cache Memandangkan pemadaman cache gagal, utas B membaca data lama dalam cache.
  • Akhirnya, utas A berjaya memadamkan cache dan utas lain mengakses data yang sama dalam cache, yang sama dengan data dalam pangkalan data.
  • Akhirnya, data cache dan pangkalan data adalah konsisten, tetapi beberapa urutan akan membaca data lama.
  • Selepas perbandingan di atas, kami mendapati bahawa pada masa , adalah mustahil untuk membezakan dengan jelas kaedah mana yang lebih baik: memadam cache dahulu atau mengemas kini pangkalan data dahulu, berfikir bahawa kedua-duanya mempunyai masalah. Kami akan membandingkan kedua-dua kaedah ini kemudian, tetapi di sini kita membincangkan terlebih dahulu bagaimana untuk menyelesaikan masalah yang timbul dalam senario di atas?
Malah, tidak kira kaedah mana yang kami gunakan di atas untuk menyegerakkan cache dan pangkalan data, apabila langkah kedua gagal, adalah disyorkan untuk

menggunakan mekanisme cuba semula untuk menyelesaikan masalah 出現(xiàn)失敗 dua gambar di atas Sudah dicat.

Seterusnya kita akan membandingkan pemadaman cache dahulu dan mengemas kini pangkalan data terlebih dahulu dalam
:

Seperti yang ditunjukkan di atas, cache dipadamkan pertama Kemas kini pangkalan data sekali lagi Kemungkinan masalah dalam 沒有出現(xiàn)失敗時:

  • Thread A berjaya memadamkan cache;
  • Thread B gagal membaca cache; >Thread B berjaya mengemas kini data lama ke cache;
  • Dapat dilihat bahawa kedua-dua langkah proses A berjaya, tetapi disebabkan keselarasan, proses B mengakses cache antara dua langkah ini.
  • Hasil akhirnya ialah data lama disimpan dalam cache dan data baharu disimpan dalam pangkalan data, dan kedua-dua data itu tidak konsisten.

Seperti yang ditunjukkan di atas, pangkalan data dikemas kini terlebih dahulu dan kemudian cache dipadamkan dalam

:

Thread A berjaya mengemas kini pangkalan data; Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data
Thread B berjaya membaca cache; 沒有出現(xiàn)失敗時

Thread A berjaya memadamkan cache.
  • Dapat dilihat bahawa
  • cache terakhir adalah konsisten dengan data dalam pangkalan data, dan kedua-duanya adalah data terkini
  • . Tetapi utas B membaca data lama semasa proses ini mungkin terdapat utas lain seperti utas B yang membaca data lama dalam cache antara dua langkah ini, tetapi kerana kelajuan pelaksanaan kedua-dua langkah ini akan menjadi lebih cepat, Jadi kesannya tidak. besar. Selepas dua langkah ini, apabila proses lain membaca data cache, masalah yang serupa dengan proses B tidak akan berlaku.
  • Kesimpulan akhir:

Selepas perbandingan, anda akan mendapati bahawa mengemas kini pangkalan data terlebih dahulu dan kemudian memadamkan cache adalah penyelesaian dengan kesan yang kurang. Jika langkah kedua gagal, mekanisme cuba semula boleh digunakan untuk menyelesaikan masalah. 4. Kelewatan pemadaman berganda

Kami menyebut di atas bahawa

jika cache dipadamkan dahulu dan kemudian pangkalan data dikemas kini

, ia mungkin menyebabkan masalah walaupun terdapat tiada kegagalan dalam data

. Jika dalam aplikasi sebenar, kita perlu memilih kaedah ini kerana pertimbangan tertentu, adakah cara untuk menyelesaikan masalah ini? Jawapannya ya, iaitu menggunakan strategi pemadaman berganda tertunda

Idea asas pemadaman berganda tertunda adalah seperti berikut

: Padam cache; Kemas kini pangkalan data ;tidur N milisaat;

    Padam cache sekali lagi.
  1. Selepas menyekat untuk satu tempoh masa, padamkan cache sekali lagi untuk memadamkan data yang tidak konsisten dalam cache
  2. . Bagi masa tertentu, anda perlu menilai anggaran masa perniagaan anda dan menetapkannya mengikut masa ini.
  3. 4.1 Apa yang perlu dilakukan jika seni bina memisahkan bacaan dan penulisan?
	public?void?write(String?key,?Object?data)?{
????????Redis.delKey(key);
????????db.updateData(data);
????????Thread.sleep(1000);
????????Redis.delKey(key);
????}
Jika pangkalan data menggunakan seni bina pemisahan baca-tulis, maka masalah baharu akan timbul, seperti yang ditunjukkan di bawah:

Pada masa ini, dua permintaan datang, minta A (operasi kemas kini ) dan minta B (operasi pertanyaan)

Minta operasi kemas kini, padam Redis


Minta pustaka utama untuk melakukan operasi kemas kini, dan pustaka utama dan pustaka hamba untuk menyegerakkan; data ;Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data
Sila minta B untuk operasi pertanyaan dan mendapati tiada data dalam Redis;

    Pergi dan dapatkan data daripada perpustakaan;
  1. Pada masa ini, penyegerakan data belum selesai, dan data yang diperolehi Ia adalah data lama
  2. Penyelesaian pada masa ini adalah untuk menanyakan pangkalan data untuk mengisi data dalam Redis, kemudian memaksanya untuk menunjuk ke pangkalan data utama; untuk pertanyaan.
  3. Apakah yang perlu saya lakukan jika pemadaman gagal?
Jika pemadaman masih gagal, anda boleh menambah bilangan percubaan semula, tetapi nombor ini mesti dihadkan Apabila melebihi nombor tertentu, langkah seperti ralat pelaporan, rekod rekod dan penghantaran peringatan e-mel mesti diambil.

5. Gunakan baris gilir mesej untuk mengimbangi pemadaman

Kemas kini pangkalan data dahulu, kemudian padamkan cache

Situasi ini juga akan menyebabkan masalah dikemas kini dengan jayanya, tetapi Jika ralat berlaku semasa peringkat pemadaman cache dan pemadaman tidak berjaya, maka apabila membaca cache sekali lagi pada masa ini, data akan menjadi salah setiap kali.

Penyelesaian pada masa ini ialah menggunakan baris gilir mesej untuk mengimbangi pemadaman. Logik perniagaan khusus diterangkan dalam istilah seperti berikut:

Minta urutan A untuk mengemas kini pangkalan data dahulu
Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan dataRalat telah dilaporkan semasa memadam Redis, dan pemadaman gagal;

Pada masa ini, kunci Redis dihantar ke baris gilir mesej sebagai badan mesej

    Sistem memadamkan Redis sekali lagi selepas menerima mesej yang dihantar oleh baris gilir mesej; ?? >Tetapi penyelesaian ini akan mempunyai kelemahan, iaitu ia akan menyebabkan banyak pencerobohan ke dalam kod perniagaan dan digabungkan secara mendalam, jadi akan ada kaedah pengoptimuman pada masa ini Kami tahu bahawa pangkalan data Mysql dikemas kini binlog selepas operasi Kita semua boleh mencari operasi yang sepadan, kemudian kita boleh melanggan log binlog pangkalan data Mysql untuk mengendalikan cache.
  1. Pembelajaran yang disyorkan:
  2. Tutorial Redis

Atas ialah kandungan terperinci Bagaimana untuk memastikan konsistensi antara cache Redis dan pangkalan data. 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

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

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

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)

Topik panas

Tutorial PHP
1502
276
Pek pengembangan terbaik Laravel yang disyorkan: 2024 Alat penting Pek pengembangan terbaik Laravel yang disyorkan: 2024 Alat penting Apr 30, 2025 pm 02:18 PM

Pakej lanjutan Laravel yang penting untuk 2024 termasuk: 1 Laraveldebrugbar, yang digunakan untuk memantau dan debug kod; 2. Laraveltelescope, menyediakan pemantauan aplikasi terperinci; 3. Laravelhorizon, menguruskan tugas -tugas redis. Pek pengembangan ini dapat meningkatkan kecekapan pembangunan dan prestasi aplikasi.

Pembinaan Persekitaran Laravel dan Konfigurasi Asas (Windows/Mac/Linux) Pembinaan Persekitaran Laravel dan Konfigurasi Asas (Windows/Mac/Linux) Apr 30, 2025 pm 02:27 PM

Langkah -langkah untuk membina persekitaran Laravel pada sistem operasi yang berbeza adalah seperti berikut: 1.Windows: Gunakan XAMPP untuk memasang PHP dan komposer, konfigurasikan pembolehubah persekitaran, dan pasang Laravel. 2.MAC: Gunakan homebrew untuk memasang PHP dan komposer dan pasang Laravel. 3.Linux: Gunakan Ubuntu untuk mengemas kini sistem, pasang PHP dan komposer, dan pasang Laravel. Perintah dan laluan khusus setiap sistem adalah berbeza, tetapi langkah -langkah teras adalah konsisten untuk memastikan pembinaan lancar persekitaran pembangunan Laravel.

Redis: perbandingan dengan pelayan pangkalan data tradisional Redis: perbandingan dengan pelayan pangkalan data tradisional May 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.

Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? May 29, 2025 pm 11:09 PM

Sistem Linux mengehadkan sumber pengguna melalui perintah ULIMIT untuk mengelakkan penggunaan sumber yang berlebihan. 1.Ulimit adalah arahan shell terbina dalam yang boleh mengehadkan bilangan deskriptor fail (-N), saiz memori (-V), kiraan thread (-u), dan lain-lain, yang dibahagikan kepada had lembut (nilai berkesan semasa) dan had keras (had atas maksimum). 2. Gunakan perintah ULIMIT secara langsung untuk pengubahsuaian sementara, seperti ULIMIT-N2048, tetapi hanya sah untuk sesi semasa. 3. Untuk kesan tetap, anda perlu mengubah suai /etc/security/limits.conf dan fail konfigurasi PAM, dan tambah sessionrequiredpam_limits.so. 4. Perkhidmatan SystemD perlu menetapkan LIM dalam fail unit

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: Beyond SQL - Perspektif NoSQL Redis: Beyond SQL - Perspektif NoSQL May 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: Membentangkan tujuan dan aplikasi utama Redis: Membentangkan tujuan dan aplikasi utama May 03, 2025 am 12:11 AM

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

Langkah dan Contoh untuk Membangun Laman Web PHP Dinamik Dengan PHPStudy Langkah dan Contoh untuk Membangun Laman Web PHP Dinamik Dengan PHPStudy May 16, 2025 pm 07:54 PM

Langkah -langkah untuk membina laman web PHP yang dinamik menggunakan PHPStudy termasuk: 1. Pasang PHPStudy dan mulakan perkhidmatan; 2. Konfigurasi Direktori Root Laman Web dan Sambungan Pangkalan Data; 3. Tulis skrip PHP untuk menghasilkan kandungan dinamik; 4. Debug dan mengoptimumkan prestasi laman web. Melalui langkah -langkah ini, anda boleh membina laman web PHP dinamik yang berfungsi sepenuhnya dari awal.

See all articles