Rumah > pangkalan data > Redis > Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

青灯夜游
Lepaskan: 2021-11-01 10:08:02
ke hadapan
2193 orang telah melayarinya

Apakah urutan tunggal redis? Mengapa redis menggunakan benang tunggal? Mengapakah Redis satu benang begitu pantas? Artikel berikut akan memberi anda analisis dan saya harap ia akan membantu anda!

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

1. Konsep asas

  • Apakah benang tunggal redis (fungsi teras dihidupkan satu utas , bukan semua fungsi)

    • IO rangkaian Redis dan pasangan nilai kunci membaca dan menulis dilengkapkan oleh satu utas (perkhidmatan teras redis)

    • Fungsi lain redis dilengkapkan dengan urutan tambahan

      • Kegigihan
      • Pemadaman tak segerak
      • Penyegerakan data kelompok

[Cadangan berkaitan: Tutorial video Redis]

2. Mengapa redis menggunakan utas tunggal

  • Overhed multi-threading

    • Menggunakan multi-threading boleh meningkatkan daya pemprosesan sistem (setiap permintaan) dan meningkatkan kebolehskalaan sistem

    • Pertambahan tanpa had dalam bilangan utas membawa kepada penurunan daya pemprosesan

      • Sumber yang dikongsi diakses oleh berbilang utas pada masa yang sama, seperti struktur data dikongsi
      • Untuk memastikan keselamatan benang, prestasi dikorbankan
      • Kunci berbutir kasar menyebabkan semua siri, dan daya pemprosesan sistem meningkat dengan peningkatan benang
  • Oleh itu untuk menyimpan Pengurusan sumber serentak, redis menggunakan satu utas untuk memastikan semua operasi bersiri

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

3. Satu utas Mengapa redis pantas

  • Kebanyakan operasi redis adalah struktur data yang cekap pada memori
  • redis menggunakan mekanisme pemultipleksan untuk mengendalikan sebilangan besar permintaan pelanggan dalam rangkaian , mencapai kadar pemprosesan yang tinggi

4.soket

  • proses komunikasi soket ( rangkaian IO memproses pasangan nilai kunci baca dan tulis pemprosesan IO rangkaian )

    • SimpleKV perlu mendengar permintaan pelanggan (bind/listen) untuk memproses permintaan Get
    • Mewujudkan sambungan (terima) dengan klien (kod)
    • Baca permintaan daripada soket (recv)
    • Menghuraikan permintaan yang dihantar oleh klien (menghuraikan)
    • Baca data nilai kunci mengikut jenis permintaan (dapat)
    • Akhirnya kembalikan hasilnya kepada klien, iaitu tulis semula data ke soket (hantar)
  • Potensi mata menyekat

    • terima () Apabila sambungan gagal diwujudkan, ia akan sentiasa menyekat

    • recv() Apabila membaca data daripada klien, ia akan sentiasa menyekat

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

  • Mod tidak menyekat soket
  • memastikan bahawa utas Redis tidak akan menunggu di titik penyekatan seperti model IO asas atau Menyebabkan Redis tidak dapat memproses permintaan sambungan atau data sebenar yang tiba
  • mekanisme pemultipleksan IO dalam Linux

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

5. Lebih banyak pemultipleksan Jalan

  • Mekanisme pemultipleksan IO dalam Linux merujuk kepada satu utas memproses berbilang strim IO, pilih/pungutan suara

  • Dalam satu utas, terdapat berbilang soket mendengar dan soket bersambung pada masa yang sama

  • Pelaksanaan khusus

    • FD ialah berbilang Soket

    • Redis menggunakan mekanisme epoll untuk membenarkan kernel mendengar soket

    • Redis boleh menyambung kepada berbilang pelanggan dan memproses permintaan dengan itu menambah baik keselarasan

    • pilih/epoll menyediakan mekanisme panggil balik berasaskan peristiwa, memanggil fungsi pemprosesan yang sepadan untuk acara yang berbeza.

      • Mula-mula masukkan acara ke dalam baris gilir Acara, tidak perlu menyemak sama ada permintaan itu benar-benar berlaku, mengelakkan pembaziran sumber CPU
      • Lakukan operasi tindak balas mengikut acara yang sepadan

Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?

6 Ringkasan

  • Benarkah redis. berbenang tunggal?

    • Pada rangkaian IO dan operasi membaca dan menulis Data menggunakan benang.
  • Mengapa menggunakan utas tunggal

    • untuk mengelakkan isu kawalan serentak dalam pembangunan berbilang benang.
    • Model IO berganda berkait rapat.
  • Mengapa satu utas begitu pantas

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan ! !

Atas ialah kandungan terperinci Mengapa redis menggunakan benang tunggal? Kenapa cepat sangat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan