Jadual Kandungan
1. Titik penyekat Redis
Titik sekatan apabila mengiris tika gugusan berinteraksi
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.
.
Rumah pangkalan data Redis Apakah mekanisme tak segerak Redis

Apakah mekanisme tak segerak Redis

Jun 01, 2023 pm 08:14 PM
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:

IO Rangkaian kadangkala perlahan, tetapi Redis menggunakan mekanisme pemultipleksan IO untuk mengelakkan utas utama menunggu sambungan rangkaian atau permintaan tiba, jadi rangkaian IO

bukan Apakah mekanisme tak segerak Redis 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 tetapkan

pertanyaan 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

pemadaman kunci besar

.

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;

Apakah mekanisme tak segerak RedisApabila 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 AOF
  • IO 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-proses

dan 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. Apakah mekanisme tak segerak Redis

Operasi 1 tidak dianggap sebagai operasi pada laluan kritikal, kerana ia tidak perlu mengembalikan data khusus kepada klien, jadi ia boleh dilaksanakan secara tak segerak oleh sub-benang latar belakang.

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!

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

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

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1262
29
Tutorial C#
1235
24
Cara Membina Mod Kluster Redis Cara Membina Mod Kluster Redis Apr 10, 2025 pm 10:15 PM

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 membersihkan data redis Cara membersihkan data redis Apr 10, 2025 pm 10:06 PM

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.

Cara Membaca Gilir Redis Cara Membaca Gilir Redis Apr 10, 2025 pm 10:12 PM

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.

Cara Mengkonfigurasi Masa Pelaksanaan Skrip Lua di Centos Redis Cara Mengkonfigurasi Masa Pelaksanaan Skrip Lua di Centos Redis Apr 14, 2025 pm 02:12 PM

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)

Cara menggunakan baris arahan redis Cara menggunakan baris arahan redis Apr 10, 2025 pm 10:18 PM

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.

Cara Melaksanakan Kaunter Redis Cara Melaksanakan Kaunter Redis Apr 10, 2025 pm 10:21 PM

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.

Cara Menetapkan Dasar Tamat Redis Cara Menetapkan Dasar Tamat Redis Apr 10, 2025 pm 10:03 PM

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.

Cara Mengoptimumkan Prestasi Debian Readdir Cara Mengoptimumkan Prestasi Debian Readdir Apr 13, 2025 am 08:48 AM

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

See all articles