Biasanya, kami akan memberi keutamaan untuk menggunakan cache Redis untuk mengurangkan beban akses pangkalan data. Walau bagaimanapun, kami juga akan menghadapi situasi berikut: apabila sebilangan besar pengguna mengakses sistem kami, mereka akan menanyakan cache terlebih dahulu Jika tiada data dalam cache, mereka akan menanyakan pangkalan data, dan kemudian mengemas kini data ke cache , dan jika data dalam pangkalan data telah berubah Ia perlu disegerakkan kepada redis Semasa proses penyegerakan, ketekalan data antara MySQL dan redis perlu dipastikan Ia adalah perkara biasa untuk kelewatan data yang singkat berlaku semasa proses penyegerakan ini. tetapi pada akhirnya adalah perlu untuk memastikan konsistensi antara mysql dan cache.
//我们通常使用redis的逻辑 //通常我们是先查询reids String value = RedisUtils.get(key); if (!StringUtils.isEmpty(value)){ return value; } //从数据库中获取数据 value = getValueForDb(key); if (!StringUtils.isEmpty(value)){ RedisUtils.set(key,value); return value; }
1. Apakah pemadaman berganda yang tertunda?
Strategi pemadaman berganda tertunda ialah strategi biasa untuk penyimpanan pangkalan data dan data cache untuk mengekalkan konsistensi dalam sistem teragih, tetapi ia tidak begitu konsisten. Malah, tidak kira penyelesaian yang digunakan, masalah data kotor dalam Redis tidak dapat dielakkan Ia hanya boleh mengurangkan masalah ini untuk menyelesaikannya sepenuhnya, kunci penyegerakan dan tahap logik perniagaan yang sepadan mesti digunakan untuk menyelesaikannya.
2. Mengapakah pemadaman berganda tertunda perlu dilakukan?
Secara amnya apabila kami mengemas kini data pangkalan data, kami perlu menyegerakkan data yang dicache dalam redis, jadi kami biasanya memberikan dua penyelesaian:
Penyelesaian pertama: laksanakan operasi kemas kini pertama , dan kemudian lakukan pembersihan cache.
Pilihan kedua: lakukan pembersihan cache dahulu, dan kemudian lakukan operasi kemas kini.
Walau bagaimanapun, kedua-dua penyelesaian ini terdedah kepada masalah berikut dalam permintaan serentak
Kelemahan penyelesaian pertama: apabila permintaan 1 pergi Selepas operasi kemas kini pangkalan data dilakukan, sebelum pembersihan cache dilakukan, permintaan 2 masuk untuk menanyakan cache Pada masa ini, data dalam cache masih merupakan data lama, dan ia belum dipadamkan sebelum ia boleh dipadamkan. , menyebabkan masalah data. Walau bagaimanapun, selepas t1 menjalankan operasi pemadaman cache, Permintaan seterusnya tidak boleh menanyakan cache, kemudian menanyakan data, dan kemudian mengemas kininya kepada cache Impak ini agak kecil
benang t1 mengemas kini db terlebih dahulu; utas telah mengemas kini db, dianggarkan kunci cache akan dipadamkan dalam masa 5 milisaat dan utas lain akan membuat pertanyaan dalam masa 5 milisaat Hasil cache masih merupakan data lama, tetapi hasil cache pertanyaan kosong selepas 5 milisaat dan. keputusan db terkini disegerakkan ke Redis sekali lagi.
Adalah perkara biasa berlaku kelewatan dalam sesuatu projek, jadi kesan kelewatan tersebut terhadap perniagaan sebenarnya sangat terhad. Tetapi bagaimana jika ia berlaku dan pemadaman cache gagal?
1 Teruskan mencuba----jika ia berada dalam antara muka protokol http, tindak balas antara muka akan menjadi perlahan dan tamat masa tindak balas akan berlaku apabila memanggil antara muka ini 2. Atau segerakan melalui borang tak segerak mq
- Kelemahan penyelesaian kedua: apabila permintaan 1 mengosongkan cache tetapi belum melakukan operasi kemas kini data, permintaan 2 masuk untuk menanyakan data lama pangkalan data dan menulis Selepas memasukkan redis, ini membawa kepada masalah ketidakkonsistenan antara pangkalan data dan data redis.
- untuk mengosongkan cache sebelum melakukan operasi kemas kini, dan menangguhkan N saat untuk mengosongkan cache sekali lagi selepas kemas kini selesai. Dua pemadaman dilakukan dan tempoh kelewatan diperlukan di antara
RedisUtils.del(key);// 先删除缓存 updateDB(user);// 更新db中的数据 Thread.sleep(N);// 延迟一段时间,在删除该缓存key RedisUtils.del(key);// 先删除缓存
4. Perkara yang perlu diberi perhatian - Masa di atas (kelewatan N saat) lebih besar daripada masa menulis operasi. Jika masa menulis untuk redis lebih awal daripada masa kelewatan, permintaan 1 akan mengosongkan cache, tetapi cache permintaan 2 masih belum ditulis, mengakibatkan situasi yang memalukan. . . 5. Bagaimana untuk menentukan masa kelewatan?
- Anggaran berdasarkan masa operasi pelaksanaan logik perniagaan membaca data dan menulis cache, apabila program perniagaan dijalankan. "Pemadaman berganda tertunda" adalah kerana penyelesaian ini akan memadamkan nilai cache sekali lagi selepas kelewatan tempoh masa selepas memadamkannya buat kali pertama.
Atas ialah kandungan terperinci Cara menggunakan strategi padam berganda tertunda redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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.

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.

Fungsi teras Redis termasuk penyimpanan memori dan mekanisme ketekunan. 1) Penyimpanan memori menyediakan kelajuan membaca dan menulis yang sangat cepat, sesuai untuk aplikasi berprestasi tinggi. 2) Kegigihan memastikan data tidak hilang melalui RDB dan AOF, dan pilihannya berdasarkan keperluan aplikasi.

Redis'sserver-sideoperatiationofferfunctionsandtrigerforexecutingcomplexoperationsontheserver.1) functionsallowcustomoperationsinlua, javascript, orredis'ssscriptinglanguage, enhancingssionability

Redisisbothadatabaseandaserver.1) asadatabase, itusesin-memorystorageforfastaccess, idealforreal-timeapplicationsandcaching.2) asaserver, itsupportspub/submessagingandluascriptingforreal-timecommunicationandserver-sideoperations.

Redis adalah pangkalan data NoSQL yang menyediakan prestasi dan fleksibiliti yang tinggi. 1) Simpan data melalui pasangan nilai utama, sesuai untuk memproses data berskala besar dan kesesuaian yang tinggi. 2) Penyimpanan memori dan model tunggal threaded memastikan bacaan dan tulis dan atom yang cepat. 3) Gunakan mekanisme RDB dan AOF untuk meneruskan data, menyokong ketersediaan dan skala yang tinggi.

Redis adalah sistem penyimpanan struktur data memori, terutamanya digunakan sebagai pangkalan data, cache dan broker mesej. Ciri-ciri terasnya termasuk model tunggal, multiplexing I/O, mekanisme ketekunan, replikasi dan fungsi clustering. Redis biasanya digunakan dalam aplikasi praktikal untuk caching, penyimpanan sesi, dan beratur mesej. Ia dapat meningkatkan prestasinya dengan memilih struktur data yang betul, menggunakan saluran paip dan urus niaga, dan pemantauan dan penalaan.

Perbezaan utama antara pangkalan data REDIS dan SQL ialah REDIS adalah pangkalan data dalam memori, sesuai untuk keperluan prestasi tinggi dan fleksibiliti; Pangkalan data SQL adalah pangkalan data relasi, sesuai untuk pertanyaan kompleks dan keperluan konsistensi data. Khususnya, 1) REDIS menyediakan akses data berkelajuan tinggi dan perkhidmatan caching, menyokong pelbagai jenis data, sesuai untuk pemprosesan data caching dan masa nyata; 2) Pangkalan data SQL menguruskan data melalui struktur jadual, menyokong pertanyaan kompleks dan pemprosesan transaksi, dan sesuai untuk senario seperti sistem e-dagang dan kewangan yang memerlukan konsistensi data.


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

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

Artikel Panas

Alat panas

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

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.

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),

Dreamweaver CS6
Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.
