Apakah mekanisme tak segerak Redis
1. Titik penyekat Redis
Objek yang berinteraksi dengan kejadian Redis dan operasi yang berlaku semasa interaksi:
Pelanggan: rangkaian IO, nilai kunci Sebagai tambahan, operasi pemadaman, pengubahsuaian dan pertanyaan, operasi pangkalan data; slave Node: Pustaka utama menjana dan menghantar fail RDB, menerima fail RDB daripada pustaka, mengosongkan pangkalan data dan memuatkan fail RDB
Menghiris contoh kluster: menghantar maklumat slot cincang kepada yang lain; contoh, migrasi data .
Hubungan antara 4 jenis objek interaktif dan operasi khusus:
- Menyekat apabila berinteraksi dengan klien Point:
bukan faktor yang menyebabkan Redis menyekat.
Tugas utama utas utama Redis adalah untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pasangan nilai kunci yang berinteraksi dengan klien. Operasi tambah, padam, ubah suai dan pertanyaan yang sangat kompleks pasti akan menyekat Redis. Kriteria untuk menilai kerumitan operasi: lihat sama ada
kerumitan operasi ialah O(N). Titik sekatan pertama Redis: pertanyaan koleksi penuh dan operasi pengagregatan:
Kerumitan operasi yang melibatkan koleksi dalam Redis biasanya O(N), jadi anda perlu memberi perhatian apabila menggunakannya .
Contohnya, elemen tetapkanpertanyaan penuh operasi HGETALL, SMEMBERS dan statistik pengagregatan
operasi set, seperti persilangan, kesatuan dan perbezaan. Titik sekatan kedua Redis: operasi pemadaman kunci besar
Operasi pemadaman koleksi itu sendiri juga mempunyai potensi risiko menyekat. Intipati operasi pemadaman adalah untuk melepaskan ruang memori yang diduduki oleh pasangan nilai kunci. Melepaskan memori hanyalah langkah pertama Untuk mengurus ruang memori dengan lebih cekap, apabila aplikasi mengeluarkan memori, sistem pengendalian perlu memasukkan blok memori yang dikeluarkan ke dalam senarai terpaut blok memori percuma untuk pengurusan dan pengagihan semula seterusnya. Proses ini sendiri mengambil masa tertentu dan akan menyekat aplikasi yang sedang mengeluarkan memori Jika sejumlah besar memori dikeluarkan serentak, masa operasi senarai terpaut blok memori percuma akan meningkat, yang akan sewajarnya menyebabkan utas utama Redis disekat. Masa untuk melepaskan sejumlah besar memori: Apabila memadamkan sejumlah besar pasangan nilai kunci, memadamkan koleksi yang mengandungi sejumlah besar elemen juga dipanggil
.
Masa yang digunakan dalam operasi pemadaman untuk koleksi dengan bilangan elemen yang berbeza:
Tiga kesimpulan dibuat:
Apabila bilangan elemen meningkat daripada 100,000 kepada 1 juta, masa pemadaman empat jenis koleksi utama meningkat daripada 5 kali kepada hampir 20 kali ganda;Apabila memadamkan set yang mengandungi 1 juta elemen, masa pemadaman maksimum jenis Hash telah mencapai nilai mutlak 1.98 saat. Dalam keadaan biasa, masa tindak balas Redis berada pada tahap mikrosaat, tetapi jika operasi mengambil masa hampir 2 saat untuk dilaksanakan, ia akan menyekat utas utama, yang tidak dapat dielakkan.
- Titik sekatan ketiga Redis: mengosongkan pangkalan data
Memandangkan pemadaman kerap pasangan nilai kunci merupakan titik sekatan yang berpotensi, dalam operasi peringkat pangkalan data Redis, Membilas pangkalan data (seperti operasi FLUSHDB dan FLUSHALL) juga merupakan potensi risiko menyekat kerana ia melibatkan pemadaman dan pelepasan semua pasangan nilai kunci.
Titik sekatan keempat Redis: Penulisan penyegerakan log AOFIO Cakera secara amnya memakan masa dan intensif buruh serta memerlukan perhatian khusus. Pembangun Redis telah lama menyedari bahawa cakera IO boleh menyebabkan penyekatan, jadi Redis direka bentuk untuk menggunakan sub-proses untuk menjana fail syot kilat RDB dan melaksanakan operasi penulisan semula log AOF. Proses anak bertanggungjawab untuk pelaksanaan, dan IO cakera perlahan tidak akan menyekat utas utama.
Jika Redis merekodkan log AOF secara langsung, ia akan menggunakan strategi tulis yang berbeza untuk menulis data ke cakera. Operasi tulis cakera segerak mengambil masa kira-kira 1 hingga 2 ms Jika sejumlah besar operasi tulis perlu direkodkan dalam log AOF dan ditulis semula secara serentak, benang utama akan disekat. Titik sekatan kelima Redis: memuatkan fail RDB daripada pustaka hamba
Dalam kelompok hamba induk, pustaka induk perlu menjana fail RDB dan memindahkannya ke pustaka hamba.
Semasa proses penyalinan pustaka utama,
mencipta dan memindahkan fail RDB dilengkapkan dengan sub-prosesdan tidak akan menyekat urutan utama.
Tetapi selepas menerima fail RDB, perpustakaan hamba perlu menggunakan arahan FLUSHDB untuk mengosongkan pangkalan data semasa, yang kebetulan mencecah titik sekatan ketiga. Selepas mengosongkan pangkalan data semasa, perpustakaan hamba perlu memuatkan fail RDB ke dalam ingatan Kelajuan proses ini berkait rapat dengan saiz fail RDB, semakin perlahan proses pemuatan.Titik sekatan apabila mengiris tika gugusan berinteraksi
Apabila menggunakan gugusan penghirisan Redis, maklumat slot cincang yang diperuntukkan pada setiap tika Redis perlu dipindahkan antara tika yang berbeza Apabila pengimbangan beban diperlukan atau apabila terdapat penambahan atau pemadaman contoh, data akan dipindahkan antara kejadian yang berbeza. Walau bagaimanapun, jumlah maklumat dalam slot cincang tidak besar, dan pemindahan data dilakukan secara beransur-ansur. Kedua-dua jenis operasi ini mempunyai risiko yang kecil untuk menyekat urutan utama Redis.
Jika penyelesaian Redis Cluster digunakan dan bigkey dipindahkan pada masa yang sama, utas utama akan disekat kerana Redis Cluster menggunakan migrasi segerak.
Lima mata sekatan:
Tetapkan pertanyaan penuh dan operasi pengagregatan;
Kosongkan pangkalan data;
Tulisan segerak log AOF;
Muat fail RDB daripada perpustakaan .
2. Titik sekatan yang boleh dilaksanakan secara tak segerak
Untuk mengelakkan operasi menyekat, Redis menyediakan mekanisme utas tak segerak:
Redis akan bermula beberapa sub-sistem Benang, dan kemudian menyerahkan beberapa tugasan kepada sub-benang ini untuk menyelesaikannya di latar belakang, bukannya utas utama yang melaksanakan tugasan ini. Ini mengelakkan daripada menyekat benang utama.
Keperluan untuk pelaksanaan operasi tak segerak:
Operasi yang boleh dilaksanakan secara tak segerak bukanlah operasi pada laluan kritikal utas utama Redis (selepas pelanggan menghantar permintaan kepada Redis, ia menunggu operasi Redis yang mengembalikan hasil data).
Selepas utas utama menerima operasi 1, operasi 1 tidak perlu memulangkan data khusus kepada klien Urusan utama boleh menyerahkannya kepada sub-utas latar belakang selesai. Pada masa yang sama, selagi Hanya kembalikan hasil "OK" kepada pelanggan.Apabila urutan kanak-kanak menjalankan operasi 1, pelanggan menghantar operasi 2 kepada tika Redis Pelanggan perlu menggunakan hasil data yang dikembalikan oleh operasi 2. Jika operasi 2 tidak mengembalikan hasil, pelanggan akan sentiasa menunggu. negeri.
Operasi 2 perlu mengembalikan hasilnya kepada klien Ia adalah operasi pada laluan kritikal, jadi utas utama mesti menyelesaikan operasi ini dengan segera.
Operasi baca Redis ialah operasi laluan kritikal yang tipikal, kerana selepas klien menghantar operasi baca, ia akan menunggu sehingga data baca dikembalikan untuk pemprosesan data seterusnya. Titik sekatan pertama Redis, "mengumpul pertanyaan penuh dan operasi pengagregatan", kedua-duanya melibatkan operasi baca dan operasi tak segerak tidak boleh dilakukan.
Padam operasi yang tidak memerlukan keputusan data khusus untuk dikembalikan kepada klien bukanlah operasi laluan kritikal. "Kedua-dua 'pemadaman kunci besar' dan 'pembersihan pangkalan data' melibatkan pemadaman data, tetapi mereka tidak berada di laluan kritikal.". Anda boleh menggunakan sub-benang latar belakang untuk melaksanakan operasi pemadaman secara tidak segerak.
"Tulisan segerak log AOF". Untuk memastikan kebolehpercayaan data, tika Redis perlu memastikan bahawa rekod operasi dalam log AOF telah diletakkan pada cakera Walaupun operasi ini memerlukan contoh untuk menunggu, ia tidak Keputusan data tertentu akan dikembalikan kepada contoh. Oleh itu, benang kanak-kanak boleh dimulakan untuk melakukan penulisan segerak log AOF.
Untuk menyediakan perkhidmatan akses data kepada pelanggan, fail RDB yang lengkap mesti dimuatkan. Operasi ini juga merupakan operasi pada laluan kritikal dan mesti dilaksanakan oleh utas utama perpustakaan hamba.
Kecuali untuk "pengumpulan pertanyaan penuh dan operasi pengagregatan" dan "memuatkan fail RDB dari pustaka", operasi yang terlibat dalam tiga titik sekatan yang lain tidak berada di laluan kritikal gunakan subrutin tak segerak Redis digunakan untuk melaksanakan pemadaman kunci besar, pangkalan data kosong dan penulisan segerak log AOF.
3. Mekanisme sub-benang tak segerak
Selepas utas utama Redis dimulakan, ia akan menggunakan fungsi pthread_create yang disediakan oleh sistem pengendalian untuk mencipta 3 sub-benang, bertanggungjawab untuk
Operasi penulisan log AOF, pasangan nilai kunci Pelaksanaan pemadaman tidak segerak dan penutupan fail.
Urut utama berinteraksi dengan urutan anak melalui baris gilir tugas dalam bentuk senarai terpaut. Apabila menerima operasi pemadaman pasangan nilai kunci dan mengosongkan pangkalan data, utas utama akan merangkum operasi itu ke dalam tugasan, memasukkannya ke dalam baris gilir tugasan, dan kemudian mengembalikan mesej penyelesaian kepada klien, menunjukkan bahawa pemadaman telah selesai.
Tetapi sebenarnya, pemadaman masih belum dilaksanakan pada masa ini Selepas sub-utas latar belakang membaca tugasan daripada baris gilir tugas, pasangan nilai kunci sebenarnya dipadamkan dan ruang memori yang sepadan dikeluarkan. . Pemadaman tak segerak ini juga dipanggil
pemadaman malas(percuma malas).
Apabila log AOF dikonfigurasikan dengan pilihan everysec, utas utama akan merangkum operasi penulisan log AOF ke dalam tugasan dan meletakkannya dalam baris gilir tugas. Satu cara untuk menulis semula ialah: Apabila sub-benang latar belakang membaca tugas, ia mula merakam ke log AOF dengan sendirinya dan utas utama boleh terus berjalan tanpa bergantung pada log AOF. Mekanisme pelaksanaan sub-benang tak segerak dalam Redis:
Pemadaman pasangan nilai kunci tak segerak dan operasi pembersihan pangkalan data adalah fungsi yang disediakan selepas Redis 4.0 Redis juga menyediakan arahan baharu untuk melaksanakan dua operasi ini:
Pemadaman pasangan nilai kunci: Apabila. terdapat sejumlah besar elemen dalam jenis koleksi (contohnya, terdapat berjuta-juta atau berpuluh-puluh juta elemen) yang perlu dipadamkan, disyorkan untuk menggunakan arahan UNLINK; 🎜>Kosongkan pangkalan data: anda boleh menggunakan arahan FLUSHDB dan FLUSHALL Kemudian tambahkan pilihan ASYNC untuk membenarkan sub-benang latar belakang mengosongkan pangkalan data secara tidak segerak.
FLUSHDB ASYNC FLUSHALL AYSNC
Salin selepas log masuk
Atas ialah kandungan terperinci Apakah mekanisme tak segerak Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Pada sistem CentOS, anda boleh mengehadkan masa pelaksanaan skrip LUA dengan mengubah fail konfigurasi REDIS atau menggunakan arahan REDIS untuk mengelakkan skrip jahat daripada memakan terlalu banyak sumber. Kaedah 1: Ubah suai fail konfigurasi Redis dan cari fail konfigurasi Redis: Fail konfigurasi Redis biasanya terletak di /etc/redis/redis.conf. Edit Fail Konfigurasi: Buka fail konfigurasi menggunakan editor teks (seperti Vi atau nano): sudovi/etc/redis/redis.conf Tetapkan had masa pelaksanaan skrip lua: Tambah atau ubah suai baris berikut dalam fail konfigurasi untuk menetapkan masa pelaksanaan maksimum skrip lua (unit: milidor)

Gunakan alat baris perintah redis (redis-cli) untuk mengurus dan mengendalikan redis melalui langkah-langkah berikut: Sambungkan ke pelayan, tentukan alamat dan port. Hantar arahan ke pelayan menggunakan nama arahan dan parameter. Gunakan arahan bantuan untuk melihat maklumat bantuan untuk arahan tertentu. Gunakan perintah berhenti untuk keluar dari alat baris arahan.

Kaunter Redis adalah satu mekanisme yang menggunakan penyimpanan pasangan nilai utama REDIS untuk melaksanakan operasi pengiraan, termasuk langkah-langkah berikut: mewujudkan kekunci kaunter, meningkatkan tuduhan, mengurangkan tuduhan, menetapkan semula, dan mendapatkan tuduhan. Kelebihan kaunter Redis termasuk kelajuan cepat, konkurensi tinggi, ketahanan dan kesederhanaan dan kemudahan penggunaan. Ia boleh digunakan dalam senario seperti pengiraan akses pengguna, penjejakan metrik masa nyata, skor permainan dan kedudukan, dan pengiraan pemprosesan pesanan.

Terdapat dua jenis strategi tamat tempoh data REDIS: Penghapusan berkala: Imbasan berkala untuk memadamkan kunci yang telah tamat tempoh, yang boleh ditetapkan melalui parameter-cap-cap-rempah yang telah tamat tempoh dan parameter kelewatan-cap-remove-time-time. Penghapusan Lazy: Periksa kekunci yang telah tamat tempoh hanya apabila kunci dibaca atau ditulis. Mereka boleh ditetapkan melalui parameter lazon-lazy-expire-expire-expire, lazy-lazy-user-del parameter.

Dalam sistem Debian, panggilan sistem Readdir digunakan untuk membaca kandungan direktori. Jika prestasinya tidak baik, cuba strategi pengoptimuman berikut: Memudahkan bilangan fail direktori: Split direktori besar ke dalam pelbagai direktori kecil sebanyak mungkin, mengurangkan bilangan item yang diproses setiap panggilan readdir. Dayakan Caching Kandungan Direktori: Bina mekanisme cache, kemas kini cache secara teratur atau apabila kandungan direktori berubah, dan mengurangkan panggilan kerap ke Readdir. Cafh memori (seperti memcached atau redis) atau cache tempatan (seperti fail atau pangkalan data) boleh dipertimbangkan. Mengamalkan struktur data yang cekap: Sekiranya anda melaksanakan traversal direktori sendiri, pilih struktur data yang lebih cekap (seperti jadual hash dan bukannya carian linear) untuk menyimpan dan mengakses maklumat direktori
