cari
Rumahpangkalan dataRedisCara menggunakan strategi padam berganda tertunda redis

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

Cara menggunakan strategi padam berganda tertunda redis

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

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

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

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

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

Benang t1 memadamkan cache terlebih dahulu; 🎜>

Cara menggunakan strategi padam berganda tertunda redis

Urutan t1 mengemas kini data dalam db; >

3 , terdapat kelemahan dalam pemprosesan penyelesaian, jadi kita perlu menggunakan strategi padam berganda tertunda
  • 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!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Redis: Panduan ke kedai data nilai kunciRedis: Panduan ke kedai data nilai kunciMay 02, 2025 am 12:10 AM

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.

Redis: caching, pengurusan sesi, dan banyak lagiRedis: caching, pengurusan sesi, dan banyak lagiMay 01, 2025 am 12:03 AM

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.

Redis: Meneroka fungsi dan faedah terasnyaRedis: Meneroka fungsi dan faedah terasnyaApr 30, 2025 am 12:22 AM

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.

Operasi sisi pelayan Redis: Apa yang ditawarkannyaOperasi sisi pelayan Redis: Apa yang ditawarkannyaApr 29, 2025 am 12:21 AM

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

Redis: Pangkalan data atau pelayan? Demystifying perananRedis: Pangkalan data atau pelayan? Demystifying perananApr 28, 2025 am 12:06 AM

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

Redis: Kelebihan Pendekatan NoSQLRedis: Kelebihan Pendekatan NoSQLApr 27, 2025 am 12:09 AM

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: Memahami seni bina dan tujuannyaRedis: Memahami seni bina dan tujuannyaApr 26, 2025 am 12:11 AM

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.

Pangkalan Data Redis vs SQL: Perbezaan UtamaPangkalan Data Redis vs SQL: Perbezaan UtamaApr 25, 2025 am 12:02 AM

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.

See all articles

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

Video Face Swap

Video Face Swap

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

Alat panas

DVWA

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

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

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

Dreamweaver CS6

Alat pembangunan web visual

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.