Menggunakan perintah yang tidak sesuai menyebabkan penyekatan pelanggan:
kunci *: Dapatkan semua operasi utama; Hgetall: Mengembalikan jumlah semua medan dalam jadual cincang;
smembers: Mengembalikan semua ahli dalam set; kerumitan ialah O(n), dan kadangkala keseluruhan jadual diimbas Apabila n meningkat, kerumitan masa akan meningkat dan pelanggan akan disekat.
Semua orang tahu bahawa apabila Redis mengambil syot kilat RDB, ia akan memanggil fork() fungsi sistem dan mencipta urutan anak untuk melengkapkan penulisan fail sementara dan keadaan pencetus ialah menyimpan konfigurasi dalam fail konfigurasi.
Benang utama.
Apabila Redis merekodkan log AOF secara langsung, jika terdapat sejumlah besar operasi tulis dan dikonfigurasikan untuk kegigihan segerak
appendfsync always
Iaitu, setiap kali data perubahan berlaku, Ia direkodkan ke cakera serta-merta Kerana menulis ke cakera memakan masa dan mempunyai prestasi yang lemah, ia kadang-kadang menyekat benang utama. Tulis semula AOF
mengeluarkan sub-utas untuk menulis semula fail Apabila melaksanakan perintah
, pelayan Redis akan mengekalkan penimbal tulis semula AOF. penimbal ini akan merekodkan semua arahan tulis yang dilaksanakan oleh pelayan semasa penciptaan fail AOF baharu oleh utas anak. Apabila urutan kanak-kanak menyelesaikan kerja mencipta fail AOF baharu, pelayan akan menambahkan semua kandungan dalam penimbal tulis semula ke penghujung fail AOF baharu, supaya Fail AOF disimpan Keadaan pangkalan data adalah konsisten dengan keadaan pangkalan data sedia ada.BGREWRITEAOF
Akhir sekali, pelayan menggantikan fail AOF lama dengan fail AOF baharu untuk melengkapkan operasi penulisan semula fail AOF.
Penyekatan berlaku semasa langkah 2. Apabila menulis data baharu dalam penimbal kepada fail baharu,
penyekatanLog AOF
Alasannya ialah pengelogan AOF tidak melakukan semakan sintaks pada arahan, yang boleh mengurangkan overhed pemeriksaan tambahan dan tidak akan menyekat pelaksanaan perintah semasa, tetapi boleh menyebabkan sekatan kepada operasi seterusnya.
Ini kerana log AOF juga dilaksanakan dalam utas utamaMasalah Kunci Besar
Kunci besar tidak bermakna nilai kunci adalah sangat besar, tetapi nilai yang sepadan dengan kunci adalah sangat besar.
Masalah sekatan yang disebabkan oleh kekunci besar adalah seperti berikut:
Menyebabkan kesesakan rangkaian: Setiap kali anda memperoleh kunci besar, trafik rangkaian adalah besar Jika saiz kunci ialah 1 MB dan bilangan lawatan sesaat ialah 1000, maka 1000MB akan dijana trafik sesaat, yang merupakan bencana untuk pelayan dengan kad rangkaian Gigabit biasa.
Menyekat urutan pekerja: Jika anda menggunakan del untuk memadamkan kunci besar, urutan pekerja akan disekat, menjadikannya mustahil untuk memproses arahan berikutnya.
Cari kunci besar
menyekat nod induk
.--bigkeys
menyekat
aplikasi sedang membebaskan memori.Mengosongkan pangkalan data adalah sama seperti memadamkan kunci besar di atas dan flushdb juga melibatkan pemadaman dan pelepasan semua pasangan nilai kunci, yang juga merupakan titik penyekat Redis.
Kluster Redis boleh mengembangkan dan mengecilkan nod secara dinamik Proses ini pada masa ini dalam keadaan separa automatik dan memerlukan campur tangan manual.
Semasa pengembangan dan pengecutan, pemindahan data diperlukan. Untuk memastikan ketekalan penghijrahan, Redis melaksanakan semua operasi migrasi sebagai operasi segerak .
Apabila melakukan penghijrahan, Redis di kedua-dua hujungnya akan memasuki keadaan menyekat untuk panjang yang berbeza-beza Untuk kekunci kecil, kali ini boleh diabaikan, tetapi jika penggunaan memori kekunci terlalu besar , serius Kadangkala, failover dalam kelompok akan dicetuskan, menyebabkan penukaran yang tidak perlu.
Atas ialah kandungan terperinci Apakah situasi penyekatan Redis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!