Rumah  >  Artikel  >  pangkalan data  >  Mengapa Redis memilih satu utas?

Mengapa Redis memilih satu utas?

PHPz
PHPzke hadapan
2023-05-30 13:01:331838semak imbas

1. Lelaran versi Redis

Mengapa Redis memilih satu utas?

Redis2.6, menyokong skrip lua; Redis4.0, kegigihan hibrid, pemadaman tak segerak berbilang benang; 0, Function, Multi-part-AOF;

2. Mengapakah Redis selalu menggunakan single thread sebelum Redis 4.0?

1. Redis menggunakan model berbenang tunggal untuk memudahkan pembangunan dan penyelenggaraan

2 Model berbenang tunggal juga boleh mengendalikan berbilang permintaan pelanggan secara serentak melalui pemultipleksan IO dan tidak menyekat IO;

3. Untuk Redis, kesesakan prestasi utama ialah memori dan rangkaian, bukan CPU; Daripada pemprosesan IO rangkaian kepada pemprosesan perintah baca dan tulis sebenar, semuanya adalah satu-benang, tetapi berbilang-benang digunakan apabila memadam data dan data berterusan.

Kesempitan prestasi Redis terutamanya IO rangkaian Oleh itu, bermula dari Redis 6.0, berbilang benang IO digunakan untuk memproses permintaan rangkaian untuk meningkatkan keselarian pemprosesan permintaan rangkaian.

4 Bagaimanakah urutan utama Redis dan utas IO melengkapkan permintaan?

1 Pelayan dan pelanggan mewujudkan sambungan soket

Urut utama bertanggungjawab untuk mewujudkan sambungan dan meletakkan soket ke dalam baris gilir menunggu global . Benang utama melepasi pusingan Kaedah pertanyaan memperuntukkan sambungan soket ke benang IO.

2. Benang IO membaca dan menghuraikan permintaan

Sebaik sahaja benang utama memberikan soket kepada benang IO, ia akan memasuki keadaan menyekat dan menunggu urutan IO menyelesaikan klien permintaan. Pada masa ini, beberapa utas IO diproses secara selari.

3. Utas utama melaksanakan perintah permintaan

Selepas utas IO menghuraikan permintaan, utas utama masih akan melaksanakan perintah ini dalam cara satu utas.

Mengapa Redis memilih satu utas?4. Benang IO akan menulis kembali ke soket dan benang utama akan mengosongkan baris gilir global

Apabila utas utama selesai melaksanakan perintah permintaan, hasilnya akan ditulis ke dalam penimbal , dan utas utama akan memasuki keadaan menyekat dan tunggu IO Benang itu menulis keputusan kembali ke soket dan mengembalikannya kepada klien.

Selepas menulis balik soket, utas utama mengosongkan baris gilir global.

5. Apakah pemultipleksan IO?

Pemultipleksan IO, model IO segerak, melaksanakan urutan untuk memantau berbilang pemegang fail Setelah pemegang fail sedia, ia boleh memberitahu program aplikasi untuk melaksanakan operasi baca dan tulis yang sepadan apabila tiada pemegang fail sedia , program akan memasuki keadaan menyekat dan mengeluarkan sumber CPU.

1. IO, tahap sistem pengendalian merujuk kepada operasi membaca dan menulis data antara mod kernel dan mod pengguna

2 🎜>3. Memultipleks, memultiplekskan benang;

4 dalam epoll, dan epoll akan memantau soket mana yang mempunyai mesej untuk mengelakkan sejumlah besar operasi yang tidak berguna.

Pada masa ini, soket menggunakan mod tidak menyekat Keseluruhan proses hanya akan disekat apabila memilih, tinjauan pendapat dan epoll dipanggil .

Menggunakan epoll, matlamat utama adalah untuk meningkatkan daya pemprosesan pelayan.

Pemultipleksan IO dan fungsi epoll adalah sebab langsung untuk **"Mengapa Redis begitu pantas?"**.

Atas ialah kandungan terperinci Mengapa Redis memilih satu utas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam